[英]Windows firewall blocking ICMP port unreachable?
我试图确定远程主机是否正在侦听特定的UDP端口号。 我这样做(在C#中)如下:
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
int sent = socket.SendTo(bufsend, bufsend.Length, SocketFlags.None, endpoint);
int recv = socket.ReceiveFrom(bufrecv, ref endpoint);
如果没有人在听,我会收到一个ICMP“端口不可达”,它在接收时报告为套接字错误,错误代码为WSAECONNRESET(10054)。 所有这一切都有意义,但只有在禁用Windows防火墙时才会发生。 如果启用了防火墙(即使我对该程序进行了例外处理),也会得到ErrorCode WSAETIMEDOUT(10060),这可能是因为防火墙吞噬了ICMP“端口不可达”。
有什么建议么? 我已经检查了防火墙的“高级安全性”设置,但无济于事。
谢谢...
请参阅上面的评论。 您必须将打开防火墙的规则应用于“目的地不可达”消息到所有程序,而不仅是应用于实现SendTo / ReceiveFrom测试的可执行文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.