當前正在嘗試實現一個簡單的ping程序,教我自己關於C#和.NET中的網絡編程。C#原始套接字接收數據包
我設法初始化一個原始套接字並正確地建立一個ICMP迴應請求數據包。在運行我的程序時,Wireshark確認我正在向所需的目標發送一個Echo請求,但是遠程機器永遠不會發回回應應答。我已經嘗試發送到多臺機器都具有相同的結果(並可以使用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 2012-01-12 16:07:43
您發送的請求與Windows Ping實用程序發送的請求之間是否有區別?你也可以用wireshark來嗅探那些人。如果你發現差異,你可能會發現你的問題。 – AVee 2012-01-12 16:08:08
您可能會發現檢查Microsoft的「Ping」實現是否有用。請參閱[參考源](http://referencesource.microsoft)中的\ Source \ .Net \ 4.0 \ DEVDIV_TFS \ Dev10 \ Releases \ RTMRel \ ndp \ fx \ src \ Net \ System \ Net \ NetworkInformation \ ping.cs .com/netframework.aspx) – Brian 2012-01-12 18:13:47