3

我试图用套接字与设备服务器通信,在我的小 Java 程序挂起后,readLine我最终不得不用数据包嗅探器注入我的目标应用程序,发现它os.writeBytes("notify\n");被分成两个数据包,第一个包含n和next otify,其中服务器不喜欢。我通过预先添加另一个来解决这个问题writeBytes

os.writeBytes(" ");
os.writeBytes("notify\n");
os.flush();

对我来说,这似乎有点 hacky 并且可能不稳定,有人可以阐明为什么我必须这样做并给我一个更好的解决方案。

干杯

4

1 回答 1

2

使用原始套接字连接时,您永远不能假设您会以离散块的形式获取消息。在生产环境中,您完全有可能一次收到部分消息或多条消息。

如果你不想处理这个问题,你应该考虑使用像Netty这样的库来为程序员处理这些问题。

话虽如此,我同意 Thomas 的观点,您的问题可能与您选择的writeBytes.

于 2012-05-14T17:38:10.640 回答