我只发送 TCP 数据包,每个数据包只有几位(一行文本左右)。我通过 HTTP 代理将它们发送到远程服务器,但是由于某种原因,当与代理的连接速度缓慢或中断时,服务器只收到数据包的一部分而不是整个数据包,并且会导致服务器端出现异常,这是怎么回事?可能吗?客户端有什么方法可以防止发送数据包片段而不是整个数据包?
示例:我正在尝试发送此数据包:
packetHead: id (1-99)
integer: 1
short: 0
byte: 4
在我的情况下,有时会发生这样的情况:当与代理的连接不好时,服务器只收到 packetHead 和整数,而数据包的其余部分会在某处丢失。
我无权修改服务器源代码,因此我需要在客户端修复它。
感谢您的任何提示。
最佳答案
请说明您如何发送数据。每次我遇到类似的问题时,都是我没有冲洗流的错。特别是如果流被压缩,您需要在 GZIP 或类似对象上调用 close/complete 才能实际发送所有内容。
关于通过 HTTP 代理的 Java TCP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33152679/