0

我有一个 Java NIO 套接字服务器。

服务器正在JSONObjects从远程客户端获取。我正在使用该SocketChannel.read(ByteBuffer)方法从频道中读取。每条消息都以 '\n' 结尾,这标志着当前消息的结束。

我的问题是,有时该read()方法会读取更多字节并到达 '\n'.. 有没有办法让我从SocketChannel唯一读取直到找到 '\n' ?我想过可能逐字节读取(我只是找不到有关如何实现它的文档..)?

还有其他解决方案吗?

4

1 回答 1

2

处理 ByteBuffer 中的字节直到并包括 '\n',因此缓冲区的位置是 '\n' 之后的第一个字节,然后调用ByteBuffer.compact()。任何超过 '\n' 的字节都将保留在缓冲区中,下一次读取将附加到它们。

于 2012-12-24T01:37:34.720 回答