我的java应用程序如何检测其是否被防火墙阻止

我的java应用程序如何检测其是否被防火墙阻止,java,windows,sockets,networking,Java,Windows,Sockets,Networking,我已经使用JAVA为桌面创建了一个应用程序,它的工作方式类似于服务器,并使用ServerSocket接受传入的连接。该软件在局域网上工作,需要防火墙允许。我如何从应用程序内部检查其是否被电脑防火墙阻止?您可以尝试通过以下方式连接到可靠的站点,例如stackoverflow.com try { new Socket("stackoverflow.com", 80); } catch (IOException e) { // something is w

我已经使用JAVA为桌面创建了一个应用程序,它的工作方式类似于服务器,并使用
ServerSocket
接受传入的连接。该软件在局域网上工作,需要防火墙允许。我如何从应用程序内部检查其是否被电脑防火墙阻止?

您可以尝试通过以下方式连接到可靠的站点,例如stackoverflow.com

   try {
        new Socket("stackoverflow.com", 80);
    } catch (IOException e) {
        // something is wrong, not necessarily firewall problem
        ... 
    }

    // no firewall 

如果在创建服务器套接字时捕获异常,则可以安全地确定端口不可用于侦听,以下是代码示例:

try {
        socket = new ServerSocket(_port);
    } catch (IOException e) {
        System.out.println("Port in use");
    }
}

如果打开套接字失败,您可以猜测。。。。否则,如果工作正常,则不会出现防火墙问题……;-)没有可靠的方法确定连接失败是由防火墙阻塞引起的。为什么要编写程序,为什么不直接询问系统管理员或网络管理员您是否已被阻止?拿起电话。想想看,你正试图编写一个软件,从外部识别另一个软件中的问题。这个问题的所有答案都是错误的,因为你的问题没有答案。你把编程的基本知识搞混了。不,你没有任何意义。没有意识到解决方案会这么简单。:)的确如此,但这并不能证明有防火墙挡着你,当你无法连接到它时,打印“正在使用的诗人”是完全错误的-1.