我试图通过套接字与设备服务器进行通信,在readLine
上我的小Java程序挂起后,我最终不得不使用数据包嗅探器注入我的目标应用程序,并发现{{1}被分成两个数据包,第一个包含os.writeBytes("notify\n");
和下一个n
,服务器不喜欢这些数据包。我通过在手前添加另一个otify
来修复此问题:
writeBytes
这对我来说似乎有点笨拙且可能不稳定,有人可以解释为什么我必须这样做并给我一个更好的解决方案。
干杯
答案 0 :(得分:2)
使用原始套接字连接时,您永远不能假设您将以离散块的形式获取消息。在生产环境中,您完全可以一次接收部分消息或多条消息。
如果您不想处理此问题,则应考虑使用像Netty这样的库来处理程序员的这些问题。
话虽如此,我同意Thomas的观点,即您的问题可能与您选择的writeBytes
有关。