我有一个简单的c程序,可以使用TCP
从服务器复制图像问题是它总是无法处理某些图像,它只接收'x'字节然后超时。
程序不是问题,因为我尝试使用TCP的不同程序(使用更大的recv缓冲区的C和python)并且它们仍然在第x个字节处失败。
server: vxworks
client: linux
如果我尝试使用相同的代码从SUN客户端连接,则接收图像没有问题。我做了一些数据包嗅探,发现我的客户端正在请求包含'x'字节的数据包'A'。服务器发送或重新发送它,但客户端从不承认它并最终超时。
问题是为什么这张图片具体?并且只发生在Linux客户端上?
写入客户端的文件总是'x'字节长
答案 0 :(得分:1)
对我来说,这似乎是网络问题。包的大小是多少?听起来很奇怪,但不可能是服务器和Linux之间的MTU黑洞?
答案 1 :(得分:1)
我的朋友曾经遇到过这个完全相同的问题,结果发现他正在传输的二进制图像的有效负载正在触发过滤路由器中的一个错误。当特定字节序列通过时,路由将丢弃连接。奇怪但真实。