私はマルチスレッドのpingプログラムを作成していました。私は、それぞれのスレッド(各IP用)にrawソケットを作成し、それぞれsendto()を使ってICMPエコー要求を送信し、次に各スレッドでrecvfrom()を実行しました。私は様々なソケットのIPからメッセージを取得しています(IP1のsendtoにソケットS1を使用した場合、IP1からS1、S2などのエコー応答を得ます)。バインドする必要がありますか?PINGプログラムの作成時にICMPエコー応答を制限する
もう1つの問題は、1つのICMP要求だけを送信しても、ターゲットから多くのエコー応答を返すことです。私がこれを制限できる方法はありますか?これは私に他のICMPパケットのいくつかを見逃す原因となっています。私のプログラムがICMPエコーの送信を停止するようにターゲットに頼む方法はありますか?
ありがとう、
使用しているOSは何ですか? – bdonlan
私はWindowsとLinuxの同じコードをusindとしています – Gambit
いくつかのデバイスはICMPエコーをブロックするので、このアプリケーションがあなたのコントロール下にないデバイスにpingを実行すると失敗する可能性があることに注意してください。 – dbasnett