mustangsally回答ポイント 60ptウォッチ

UDPでの通信プログラミングに関する質問です。

(PC:A) - (NetworkEmulator) - (PC:B)という構成で
PC:Aから8kbyte(MTUサイズ以上)のデータPC:Bに対してsendtoで送信します。
その際にNetworkEmulatorで何もしない場合は問題なくPC:Bでデータを受信できるのですが、
packetLossを発生させるとPC:Bではrecvでプログラムが止まってしまい、アプリとしてデータを受信することができなくなってしまいます。

確認した項目としては以下になります
- PC:Aの送信サイズをMTUサイズ以下にすると問題が発生しない
- PC:B上でTCPDUMPにより届いているパケットを確認すると、NetworkEmulatorで想定した通りのpacketLoss率でデータが届いている
- PC:BがWindowsXPの際に上記問題が発生して、PC:BがLinuxの際には問題が発生しない
- winsockのオプションでUDP_NOCHECKSUMをOnにして送信しても同様の問題が発生する

上記問題に関して、原因と対応方法をご存じでしたら、よろしくお願いします。

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

みんなの回答

この質問へのコメント

コメントはありません

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2010-01-24 13:42:49
終了日時
2010-01-31 13:45:02
回答条件
回答にURL必須 1人2回まで

この質問のカテゴリ

この質問に含まれるキーワード

tcpdump18Linux2257UDP57WindowsXP1917プログラミング1135パケット292プログラム5048アプリ4092オプション1258

人気の質問

メニュー

PC版