我是socket编程的新手,考虑到很多问题。
我写了一个代码来检查互联网的可用性。当通过netbeans IDE启动运行时,它会检测互联网连接的可用性......
蓝色句子表示可以连接互联网。
运行构建的jar时,它会抛出超时错误并且不检查可用性......
并且第二步的图像是:
红色句子表示无法访问互联网。
这是代码。什么问题的任何想法?我很困惑,因为这不是一个常规问题。
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());
}
}
感谢您的关注。
答案 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);
}
}