【发布时间】:2016-01-14 03:44:31
【问题描述】:
我正在发送 TCP 数据包,每个数据包只有几位(一行文本左右)。我通过 HTTP 代理将它们发送到远程服务器但是由于某种原因,当与代理的连接速度很慢或与服务器中断时,只到达数据包的一个片段而不是整个数据包,它会导致服务器端出现异常,它是如何做到的可能吗?客户端有什么方法可以防止发送数据包的片段而不是整个数据包?
示例:我正在尝试发送此数据包:
packetHead: id (1-99)
integer: 1
short: 0
byte: 4
在我的情况下,有时会发生这种情况,服务器只到达 packetHead 和整数,而当与代理的连接不好时,其余的数据包会丢失。
我无权修改服务器源代码,所以我需要在客户端修复它。
感谢任何提示。
【问题讨论】:
-
在不知道您的服务器、您的代理甚至您的发送代码的情况下,它只是在黑暗中钓鱼。如果您不使用外来代理并且可以排除服务器端错误,那么我会说有时您的发送代码在触发传输之前仅部分填充了 tcp 发送缓冲区。但这只是一个疯狂的猜测。 TCP 是一个经过良好测试的协议,标准代理希望不会产生这样的错误,即使消息是分段的,我对此表示怀疑。你用嗅探器检查过吗?
标签: java sockets exception tcp proxy