我已经阅读了此处发布的一些问题,我发现这篇文章对此事最可靠:What is the best way to check for Internet connectivity using .NET?
但是,如果界面所连接的网络被Google屏蔽了呢? (例如中国的互联网)
答案 0 :(得分:5)
如果您正在检查互联网连接,您可能有一个理由......这意味着您希望使用某些特定的网络资源。 请检查该资源。
更好的是,根本不检查。互联网服务随时都可能上升或下降...包括您运行支票与尝试使用支票之间的时刻服务。这意味着你所做的任何事情都必须能够处理失败。所以只是不要运行检查;把工作放到你的异常处理程序中。
我知道使用异常处理进行流量控制可能听起来很慢或很奇怪。但是,不使用流量控制异常的主要原因是它几乎是你在所有计算机科学中可以做的最慢的事情。你知道更糟糕的是什么吗?等待网络数据包在世界各地旅行或超时,就是这样。
在极少数情况下,当您只想向用户显示常规互联网状态时,您可以same way Microsoft does执行,并使用www.msftncsi.com
。
答案 1 :(得分:1)
如果你想要的是在.Net
中检查互联网状态而不依赖WebClient
班级或Google
,这是最好的方法
首先,导入DLL wininet
[System.Runtime.InteropServices.DllImport("wininet.dll")]
然后,拨打static extern bool InternetGetConnectedState(...)
如果互联网连接,则会返回true
,如果false
无法连接,则返回Google
:
[System.Runtime.InteropServices.DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);
public static bool IsConnected()
{
return InternetGetConnectedState(out int description, 0);
}
其中:
if(IsConnected())
{
//Internet is connected
}
else
{
//Internet is not connected
}