我的应用程序需要向网站发出 GET 请求,我希望能够知道它是否被防火墙阻止,并要求用户添加例外。

我怎样才能发现我的获取请求失败是因为防火墙而不是其他原因?

有帮助吗?

解决方案

如果它是一个好的防火墙,则不能。除其他选项外,防火墙可以:

  • 用几个不同的之一回复 ICMP 消息,指示目的地不可访问,或者
  • 默默地丢弃请求,导致超时。

合理的选择是解释应用程序无法访问网站的原因,并提供一些有用的建议:

    No response from www.site.com:
    * Your computer may not be connected to the Internet.
    * The site may be down.
    * The site may be blocked by a firewall.
    The network indicated that www.site.com is not accessible:
    * Helpful messages go here.

重要的一点是区分,也许比我上面所做的更好, 类型 的失败,以及 原因 在他们后面。例如,“无响应”故障排除步骤与“设备告诉我它没有在该端口上侦听”故障排除步骤不同。

其他提示

尝试用短超时访问互联网...... 如果命令失败,你可以假设机器有需要的用户交互的防火墙。

如果防火墙是很好的,你不能检测到它。

使用的Win32 API的防火墙(经典)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top