套接字连接超时内置jar文件中的问题

时间:2015-03-13 19:59:36

标签: java sockets

我是socket编程的新手,考虑到很多问题。

我写了一个代码来检查互联网的可用性。当通过netbeans IDE启动运行时,它会检测互联网连接的可用性......

enter image description here

蓝色句子表示可以连接互联网

运行构建的jar时,它会抛出超时错误并且不检查可用性......

enter image description here

并且第二步的图像是:

enter image description here

红色句子表示无法访问互联网

这是代码。什么问题的任何想法?我很困惑,因为这不是一个常规问题。

private void checkInternetConnection()
{        
    Socket socket = null;
    try
    {                        
        socket = new Socket("varzesh3.com", 80);    
        socket.setSoTimeout(50000);
        lblStatus.setForeground(Color.blue);
        lblStatus.setText("اینترنت فعال است");
        socket.close();            
        timer.stop();                                       
    }
    catch (IOException ex)
    {
        lblStatus.setForeground(Color.red);
        lblStatus.setText("اینترنت غیر فعال است");  
        JOptionPane.showMessageDialog(null, ex.getMessage());
    }        
}

感谢您的关注。

2 个答案:

答案 0 :(得分:1)

您是否检查过是否需要配置代理互联网(可能带有登录名和密码)?

如果您使用的是Windows,请尝试执行“cmd”(Windows命令行)并键入:tracert varzesh3.com还要检查有关代理的网络配置。

答案 1 :(得分:0)

感谢@Florian Prud' homme

好的我用这段代码改变了我的网络检查代码:)并且它工作正常:)

private void checkInternetConnection(){      
        try {
            Process proccess = java.lang.Runtime.getRuntime().exec("ping varzesh3.com");
            int result = proccess.waitFor();
            if(result == 0){
                lblStatus.setForeground(Color.blue);
                lblStatus.setText("اینترنت فعال است");
                timer.stop();
            }
            else{
                lblStatus.setForeground(Color.red);
                lblStatus.setText("اینترنت غیر فعال است"); 
            }

        } catch (IOException | InterruptedException ex) {
            Logger.getLogger(InternetChecker.class.getName()).log(Level.SEVERE, null, ex);
        }
    }