如何接收ICMP响应&“端口不可达&”;在c#中使用UDP消息
本文关键字:消息 UDP 端口不可达 响应 ICMP 何接收 | 更新日期: 2023-09-27 18:10:19
我正在尝试接收ICMP响应"端口不可达"到C#
的UDP消息,这就是我要做的:
IPEndPoint remoteEndpoint = new IPEndPoint(IPAddress.Parse("192.168.211.133"), 0);
var udpClient = new UdpClient("192.168.211.133", 20);
Byte[] messagebyte = Encoding.Default.GetBytes("hi".ToCharArray());
int s = udpClient.Send(messagebyte, messagebyte.Length);
Byte[] ReceiveBuffer = new Byte[256];
ReceiveBuffer = udpClient.Receive(ref remoteEndpoint);
但是程序卡在
上ReceiveBuffer = udpClient.Receive(ref remoteEndpoint);
我做错了什么?
请帮帮我!
UDP的全部要点是可能没有响应。经过一段时间后,您需要假定目标不可读。
看一下另一个问题
如果你捕捉到异常和SocketErrorCode == SocketError。ConnectionReset,这意味着您收到"端口不可达"。
或者,您可以设置套接字使用Icmp协议,如下所示:
Socket icmp = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);
地址似乎是我尝试过的问题,如果您将其更改为127.0.0.1,您确实会收到icmp消息