0

我有一个简单的 c 程序来使用 TCP 从服务器复制图像

问题是它总是无法处理某些图像,它只接收“x”字节然后超时。

该程序不是这里的问题,因为我已经尝试使用 TCP 使用不同的程序(C 和 python 使用更大的 recv 缓冲区),但它们仍然在第 x 个字节处失败。

server: vxworks 
client: linux

如果我尝试使用相同的代码从 SUN 客户端连接,则接收图像没有问题。我做了一些数据包嗅探,发现我的客户端正在请求数据包“A”,其中包含“x”字节。服务器发送或重新发送它,但客户端永远不会确认它并最终超时。

问题是为什么这张图片是特定的?并且只发生在linux客户端上?

写入客户端的文件总是'x'字节长

4

2 回答 2

1

对我来说,这看起来像是网络问题。包的大小是多少?听起来很奇怪,但它不会是服务器和 linux 之间的 MTU 黑洞吗?

于 2012-04-20T21:17:28.773 回答
1

我的朋友曾经遇到过同样的问题,结果证明他传输的二进制图像的有效负载在一路上触发了过滤路由器中的错误。当特定的字节序列通过时,该路由只会断开连接。离奇但真实。

于 2012-04-20T21:52:47.090 回答