Windows连接到网络时收到通知

时间:2012-10-28 08:37:23

标签: java windows networking notifications java-native-interface

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

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

  1. 在程序启动时,请检查Internet连接
  2. 如果没有可用的互联网连接,"注册"用于Windows网络通知和WAIT()
  3. 用户连接到Internet,Windows os通知Java机器=>线程醒来
  4. 做一些事......

1 个答案:

答案 0 :(得分:0)

以下执行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连接   目的地主机。