通过 HTTP 代理的 Java TCP 数据包

标签 java sockets exception tcp proxy

我只发送 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/

相关文章:

c# dll microsoft dll 异常

c++ - C++ 异常会阻止函数被内联吗?

java - 在 Robolectric 上运行第一个测试时出现问题

python - python中的Errno 10061,我不知道该怎么办

java - 如何在链接表上设置hibernate生成的外键约束名称?

Java:从二进制文件读取,通过套接字发送字节

c++ - 在传出的 UDP 数据包上设置 TTL?

python异常消息捕获

Java 字符编码、ISO 到 UTF 转换

java - 从 Web 服务收到的响应为空