繁体   English   中英

Windows连接到网络时收到通知

[英]Getting notified when Windows connects to a network

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

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

  1. 在程序启动时,请检查Internet连接
  2. 如果没有可用的互联网连接,请“注册”以获取Windows网络通知和WAIT()
  3. 用户连接到Internet,Windows OS通知Java机器=>线程唤醒
  4. 做点什么......

以下执行ping操作,比下载页面更便宜,您可以更改超时:

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

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

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

我没有更好。

InetAddress.isReachable文档:

测试该地址是否可访问。 尝试尽力到达主机,但防火墙和服务器配置可以阻止导致无法访问状态的请求,同时可以访问某些特定端口。 如果可以获得特权,则典型的实现将使用ICMP ECHO REQUEST,否则它将尝试在目标主机的端口7(Echo)上建立TCP连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM