現在、C#と.NETでネットワークプログラミングについて教えるための単純なpingプログラムを実装しようとしています。C#Rawソケットパケットを受け取る
未処理のソケットを初期化し、ICMPエコー要求パケットを正しく構築できました。私のプログラムを走らせるとき、Wiresharkは私が希望の目的地にエコーリクエストを送信していることを確認しますが、リモートマシンはエコー応答を返信しません。私は同じ結果を持つ複数のマシンにすべて送信しようとしました(これらのマシンのそれぞれは、Windowsのpingユーティリティを使用してpingできます)。私のコードは次のようになります:誰もが、リモートマシンが何らかの応答を送信しない理由はどんな理由が示唆でき
IcmpPacket echoReq = new IcmpPacket;
/*Some code to initialize packet*/
rawSocket.Send(echoReq, destinationIP); //syntax may be wrong, dont have the code infront of me sorry
rawSocket.ReceiveFrom(buffer, remoteEndpoint);
場合、私は非常に感謝されると思います。
WiresharkがICMPエコー要求として識別しても、パケットに何か問題があるはずです。気になる最も可能性の高い原因は、ヘッダーチェックサム(IPとICMPの両方)です。あなたはそれらをチェックしましたか? Wiresharkは、あなたが正しいと思っているかどうかを教えてください。 – Celada
送信した要求とWindowsのpingユーティリティが送信する要求には違いがありますか?あなたはwiresharkでそれらを嗅ぐことができます。違いを見つけたら、おそらくあなたの問題を見つけるでしょう。 – AVee
マイクロソフトの「Ping」の実装が有益であるかどうかを調べることができます。 [参照元](http://referencesource.microsoft)から '\ Source \ .Net \ 4.0 \ DEVDIV_TFS \ Dev10 \リリース\ RTMRel \ ndp \ fx \ src \ Net \ System \ Net \ NetworkInformation \ ping.cs'を参照してください。 .com/netframework.aspx) – Brian