【发布时间】:2011-06-23 05:48:33
【问题描述】:
我正在构建一个应用程序,我在其中使用 TCP 使用 Java 中的套接字编程。当服务器端防火墙运行时,我无法连接到服务器。那么如何在 Java 中检查防火墙是否正在运行并告诉服务器管理员他应该将其关闭。
【问题讨论】:
-
'我无法与服务器绑定':您无法连接到服务器?
-
我建议您相应地更正您的问题。
我正在构建一个应用程序,我在其中使用 TCP 使用 Java 中的套接字编程。当服务器端防火墙运行时,我无法连接到服务器。那么如何在 Java 中检查防火墙是否正在运行并告诉服务器管理员他应该将其关闭。
【问题讨论】:
唯一有保证的方法是实际尝试建立与主机:端口的连接。
但同样,如果你无法连接,你不能说这是因为防火墙,可能是因为服务器实际上已经关闭。因此,您不能完全一致地判断防火墙是否已打开。
【讨论】:
@Suraj 是对的。如果你不能到特定的 TCP 端口你不知道主机是否不可用,没有人在监听该端口或防火墙阻止你。 但是有一个技巧可以帮助 90% 的情况。 通常防火墙配置有 HTTP:80、ICMP 等例外。因此,您可以尝试连接到您的端口。如果它有效,你就完成了。否则,请尝试执行与主机的任何其他连接(HTTP、ICMP 等)。如果您设法做到这一点,防火墙会阻止您。否则主机可能无法访问。
【讨论】:
您的问题不清楚,但一般来说,查看是否有任何资源可用的唯一可靠方法是尝试使用它。无论如何,您必须应对出现的异常,并且在真正尝试之前使用其他一些测试并不能保证使用相同的路径并引入时间窗口问题。所以不要这样做。只需编写代码并捕获异常即可。
【讨论】: