3

我正在尝试接收对 UDP 消息的 ICMP 响应“端口无法访问”,C#这就是我正在尝试做的事情:

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);

我究竟做错了什么?

请帮我!

4

3 回答 3

0

如果您捕获到异常并且 SocketErrorCode == SocketError.ConnectionReset,则意味着您收到“端口无法访问”。

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

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

于 2013-10-18T09:50:25.510 回答
0

UDP的全部意义在于可能没有响应。经过一定时间后,您需要假设目的地不可读。

看看这个其他问题

于 2013-04-22T22:03:06.390 回答
0

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

于 2020-11-17T13:36:31.507 回答