UDP(データのサイズ150バイト)を使用して1つのPCから別のPCにデータを送信するプログラムがあります。そのプログラムはdelphi7(データの送受信に使用するTldUDPClientおよびTldUDPServerコンポーネント)で記述されています。このプログラムを30%のパケット損失でテストする必要があります。
私ipfw
はWindowsに使用しています(sourceforgeからダウンロード):
ipfw -f flush
ipfw add pipe 1 ip from any to any out
ipfw pipe 1 config plr 0.3
pingを使用すると、データが30%失われることがわかります。
delphiプログラムを起動すると、しばらく作業した後、エラーが返されますsocket error 10004
。エラーの説明は次のとおりです。関数呼び出しが中断されました。の呼び出しにより、ブロッキング操作が中断されましたWSACancelBlockingCall
。
ネットワークコンポーネントとパケット損失エミュレーションの間の機能の問題ですか?それとも、実際の状況でも、パケット損失が発生したときにそれがわかりますか?パケット損失のエミュレーションに使用できる別のファイアウォールまたは別のソフトウェアはどれですか?