gpt4 book ai didi

java - 当 Windows 连接到网络时收到通知

转载 作者:可可西里 更新时间:2023-11-01 14:36:43 26 4
gpt4 key购买 nike

在 Java 程序(使用 JNI)中,有没有什么方法可以在新连接可用时由 Windows 操作系统通知?目前,我必须检查的唯一方法是轮询尝试下载网页的函数。如果下载成功并且没有抛出异常,那么我可以猜测有 Internet 连接。

但是,更好的解决方案可能是这个:

  1. 在程序启动时,检查互联网连接
  2. 如果没有可用的互联网连接,“注册”Windows 网络通知和 WAIT()
  3. 用户连接到 Internet,Windows 操作系统通知 Java 机器=> 线程唤醒
  4. 做一些事情....

最佳答案

下面做一个ping,比下载一个页面开销小,而且可以改超时:

InetAddress.getByName( "stackoverflow.com" ).isReachable( 4000 )

以低优先级放入线程循环:

while( ! InetAddress.getByName( "stackoverflow.com" ).isReachable( 4000 )) {
Thread.slepp( 1000L );
}

我没有更好。

InetAddress.isReachable 文档:

Test whether that address is reachable. Best effort is made by the implementation to try to reach the host, but firewalls and server configuration may block requests resulting in a unreachable status while some specific ports may be accessible. A typical implementation will use ICMP ECHO REQUESTs if the privilege can be obtained, otherwise it will try to establish a TCP connection on port 7 (Echo) of the destination host.

关于java - 当 Windows 连接到网络时收到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13107443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com