Java Socket,小字符串不必要地分成两个数据包

时间:2012-05-14 17:34:26

标签: java sockets

我试图通过套接字与设备服务器进行通信,在readLine上我的小Java程序挂起后,我最终不得不使用数据包嗅探器注入我的目标应用程序,并发现{{1}被分成两个数据包,第一个包含os.writeBytes("notify\n");和下一个n,服务器不喜欢这些数据包。我通过在手前添加另一个otify来修复此问题:

writeBytes

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

干杯

1 个答案:

答案 0 :(得分:2)

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

如果您不想处理此问题,则应考虑使用像Netty这样的库来处理程序员的这些问题。

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