2014-10-13 104 views
0

我要檢查使用UDPClient遠程計算機的連接。聽說如果發生故障它將返回一個icmp數據包。我們如何能夠抓住它? 如何檢查遠程機器?如何檢查遠程UDP端口

  UdpClient receivingUdpClient = new UdpClient(); 
      receivingUdpClient.Connect(IPAddress.Parse("10.2.2.13"), 80); 

      Byte[] sendBytes = Encoding.ASCII.GetBytes("0"); 
      Var b=receivingUdpClient.Send(sendBytes, sendBytes.Length); 
+0

這是一個類似的問題:http://stackoverflow.com/questions/23118113/c-sockets-send-udp-and-process-icmp-reply-from-router這樣你就可以看到答案在那裏。順便說一句,ICMP可能會被對方壓制,所以你可能根本沒有收到它。先用Wireshark或類似軟件進行檢查。 –

回答

0

使用UDP,也知道包是否到達了目的地或沒有(與TCP,它發送ACK包,讓發送者知道它的接收數據包比較)沒有明確的方法。

的確,在某些情況下,發送了ICMP packets,但是如果數據包在路由路徑某處被過濾掉(或者簡單地丟棄),該怎麼辦?就我所見,大多數家庭路由器都是預配置的,例如,將所有ICMP放在外部端口上。

而不是依賴ICMP數據包,你可以調查你使用的協議是否有一個PING包(或一些等效的無操作數據包,或者如果你創建了協議 - 添加它!),並使用它超時/重試邏輯來驗證服務是否可用。