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