我有一个Java NIO套接字服务器。
服务器从远程客户端获取JSONObjects
。
我正在使用SocketChannel.read(ByteBuffer)
方法来读取频道。
每条消息以'\ n'结尾,标记当前消息的结束。
我的问题是有时候read()
方法读取更多字节并在'\ n'之后到达..
有没有办法让我从SocketChannel
读取,直到找到'\ n'?我想也许逐字节读取(我只是找不到如何实现它的文件..)?
任何其他解决方案?
答案 0 :(得分:2)
处理ByteBuffer中的字节直到并包括'\ n',因此缓冲区的位置是'\ n'之后的第一个字节,然后调用ByteBuffer.compact()。超过'\ n'的任何字节都将保留在缓冲区中,下一次读取将附加到它们。