如何接收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);

我做错了什么?

请帮帮我!

如何接收ICMP响应&“端口不可达&”;在c#中使用UDP消息

UDP的全部要点是可能没有响应。经过一段时间后,您需要假定目标不可读。

看一下另一个问题

如果你捕捉到异常和SocketErrorCode == SocketError。ConnectionReset,这意味着您收到"端口不可达"。

或者,您可以设置套接字使用Icmp协议,如下所示:

Socket icmp = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp);

地址似乎是我尝试过的问题,如果您将其更改为127.0.0.1,您确实会收到icmp消息