我正在构建一个应用程序,我使用TCP在Java中使用Socket编程。当服务器端防火墙正在运行时,我无法连接到服务器。那么如何在Java中检查防火墙正在运行并告诉服务器管理员他应该将其关闭。
答案 0 :(得分:1)
唯一有保证的方法是实际尝试建立与host:port的连接。
但是,如果你无法连接,你不能说它是因为防火墙,可能是因为服务器实际上已经关闭了。因此,您无法确切地说防火墙已打开。
答案 1 :(得分:1)
@Suraj是对的。如果你不能到特定的TCP端口,你不知道主机是否不可用,没有人正在监听端口或防火墙阻止你。 但有一个技巧可以帮助90%的案例。 通常,防火墙配置具有HTTP:80,ICMP等异常。因此,您可以尝试连接到您的端口。如果它有效,你就完成了。否则尝试执行与主机的任何其他连接(HTTP,ICMP等)如果您设法做到这一点,防火墙阻止了您。否则可能主机无法访问。
答案 2 :(得分:0)
您的问题不清楚,但一般来说,查看是否有资源可用的唯一可靠方法是尝试使用它。您必须应对出现的异常,并且在实际尝试之前使用其他一些测试并不能保证执行相同的路径并引入时序窗口问题。所以不要这样做。只需编写代码并捕获异常。