Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中不断检查internet连接_Java_Wait - Fatal编程技术网

在java中不断检查internet连接

在java中不断检查internet连接,java,wait,Java,Wait,我试着每5秒钟检查一次互联网是否持续打开,我写了下面的代码,但有些代码显示它是如何在等待和无限等待中运行的 我写的代码: Socket socket = null; public void checkInternetConnectivity() throws InterruptedException { boolean reachable = false; ScheduledExecutorService service = Executors.newSingleThread

我试着每5秒钟检查一次互联网是否持续打开,我写了下面的代码,但有些代码显示它是如何在等待和无限等待中运行的

我写的代码:

Socket socket = null;


public void checkInternetConnectivity() throws InterruptedException {
    boolean reachable = false;
    ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
    service.scheduleAtFixedRate(new Runnable() {
        @Override
        public void run() {
            try {
                socket = new Socket("xxx.xxx.xxx.x", xx);
            } catch (UnknownHostException e) {
                stopApp();
            } catch (IOException e) {
                stopApp();
            }
        }
    }, 0, 5, TimeUnit.SECONDS);


    synchronized (this) {
        wait();
    }
}

private void stopApp() {
    System.out.println("Internet Not Available stopping app");
    System.exit(0);
}
它总是卡在下面的内部:

synchronized (this) {
        wait();
    }
你可以做:

InetAddress.isReachable 
根据你的需要,你应该考虑通过

尝试达到特定的主机。
private static boolean googleIsAvailable() {
    try {
        final URL url = new URL("http://www.google.com");
        final URLConnection connection = url.openConnection();
        connection.connect();
        connection.getInputStream().close();
        return true;
    } catch (MalformedURLException e) {
        throw new RuntimeException(e);
    } catch (IOException e) {
        return false;
    }
}
如果您正在与Web服务通信,Web服务应该提供一个GET方法来检查它是否可用

如果你需要经常检查,试着做一些类似的事情

Socket s = new Socket(SERVER_ADDRESS, TCP_SERVER_PORT);
while(s.isConnected()){
 //do your stuff
}  
您还应该检查keepAlive选项

但更重要的问题是,如果internet连接不再可用,应用程序中会发生什么情况

如果服务器不再可用,大多数方法都会抛出异常


你可以抓住他们并做出反应。

如果你在等待,是否也应该有人通知你?那是哪里?如果是预定任务,为什么要等待?你在哪里通知?@SMA-我同意你的意见,但不确定我在这里通知的确切位置。为什么不期望它?以前你所做的只是设置一个任务在另一个线程中运行。谢谢你的回答,但我想它不会经常检查。它只会检查我何时何地调用此函数。更新了我的答案。。。套接字连接具有断开连接的方法