0

TCPを使用してサーバーからイメージをコピーする簡単なCプログラムがあります

問題は、特定の画像で常に機能しないことです。「x」バイトしか受信せず、タイムアウトします。

TCP を使用して別のプログラム (より大きな recv バッファーを使用する C および python) を試してみましたが、「x」バイト目でまだ失敗するため、ここではプログラムは問題ではありません。

server: vxworks 
client: linux

同じコードを使用して SUN クライアントから接続しようとすると、イメージの受信に問題はありません。少しパケット スニッフィングを行ったところ、クライアントが「x」バイトを含むパケット「A」を要求していることがわかりました。サーバーはそれを送信または再送信しますが、クライアントはそれを確認せず、最終的にタイムアウトします。

質問は、なぜこの画像が特定のものなのですか? Linuxクライアントでのみ発生しますか?

クライアントに書き込まれるファイルの長さは常に「x」バイトです

4

2 に答える 2

1

私にとってはネットワークの問題のようです。パケットのサイズはどれくらいですか?奇妙に聞こえますが、サーバーとLinuxの間のMTUブラックホールではないでしょうか。

于 2012-04-20T21:17:28.773 に答える
1

私の友人はかつてこれとまったく同じ問題を経験したことがあり、彼が転送していたバイナリ イメージのペイロードが途中でフィルタリング ルーターのバグを引き起こしていることが判明しました。ルートは、特定のバイト シーケンスが通過したときに接続をドロップするだけです。奇妙ですが本当です。

于 2012-04-20T21:52:47.090 に答える