在Java程序(使用JNI)中,当新的连接可用时,是否有任何方法可以通知Windows操作系统? 目前,我必须检查这一点的唯一方法是轮询试图下载网页的功能。如果下载成功并且没有抛出异常,那么我可以猜测是否存在Internet连接。
然而,更好的解决方案可能是这个:
答案 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连接 目的地主机。