Java NIO SocketChannel读取预定义的字节数

时间:2012-12-23 14:15:53

标签: java nio bytebuffer socketchannel

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

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

我的问题是有时候read()方法读取更多字节并在'\ n'之后到达.. 有没有办法让我从SocketChannel读取,直到找到'\ n'?我想也许逐字节读取(我只是找不到如何实现它的文件..)?

任何其他解决方案?

1 个答案:

答案 0 :(得分:2)

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