gpt4 book ai didi

Java NIO SocketChannel 读取预定义字节数

转载 作者:行者123 更新时间:2023-12-02 07:22:42 25 4
gpt4 key购买 nike

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

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

我的问题是,有时 read() 方法会读取更多字节并到达“\n”之后。有没有办法让我只从 SocketChannel 读取数据,直到找到 '\n' 为止?我考虑过可能是逐字节读取(我只是找不到有关如何实现它的文档..)?

还有其他解决方案吗?

最佳答案

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

关于Java NIO SocketChannel 读取预定义字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14011666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com