繁体   English   中英

Windows防火墙阻止ICMP端口无法访问?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM