.NET 判断网络连接状态及状态更改

来源:互联网 发布:javascript游戏开发 编辑:程序博客网 时间:2024/04/30 02:20

google一下,发现了很多办法,列举如下:

1)使用HOOK监控

2)通过WMI监控    ---涉及到系统核心了,而且对于vista/win7等系统是否能用还不知道

3)try{连接服务器}catch{}    ---性能较低

4)ping测试    ---准确性及时性应该是最高的,对应主机也不难找到,比如baidu、google是不会关机的

具体实现参考此兄博文:http://blog.csdn.net/xiamin/archive/2009/02/14/3889696.aspx

5)使用api:wininet.dll    ---简单、高效

上面3)4)5)的实现都可以参考此兄:http://blog.csdn.net/Sugar_Tiger/archive/2009/06/23/4291971.aspx

6)通过Socket连接测试    ---不甚熟悉

下面推荐两个正宗.NET方案:

1)使用System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()判断联网状态

注意:只要有一个网络是通的方法就返回true,其解释是Indicates whether any network connection is available.

System.Net.NetworkInformation命名空间下另有NetworkChange类,此类提供了网络连接状态改变事件(注意也是any network conn)和网络地址改变事件(针对any network conn的ip改变),用起来还是很方便的。

2)使用Microsoft.VisualBasic.Devices.Computer.Network.IsAvailable属性

注意:需要引用Microsoft.VisualBasic.dll,这个是VB在.net下的实现,里面有很多方便的小功能哦,放心它也是代码安全的。

这里也提供了连接更改事件(也是any network conn的)。

总结:最后的两个推荐方案简单实用高效,推荐使用;

但是如果对网络判断准确性的要求很高并且是连接外网的话,定时ping 百度或许是不错的选择(百度服务器?就牺牲一下方便大家呗 ^_^)

原创粉丝点击