2014-10-13 56 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包(或一些等效的无操作数据包,或者如果你创建了协议 - 添加它!),并使用它超时/重试逻辑来验证服务是否可用。