我快速搜索了如何检查互联网是否可用。他们中的大多数人都在谈论对wininet.dll进行InterOp调用。
其中一个答案指向System.Net.NetworkInformation命名空间。探索命名空间我发现了一个类Ping,它可以用来从代码ping我们的服务器,并检查服务器是否可用。
我想问的是这个解决方案与其他解决方案相比如何?
Ping soPing = new Ping();
var soPingReply = soPing.Send("www.stackoverflow.com");
if (soPingReply.Status != IPStatus.Success)
{
// SO not available
}
答案 0 :(得分:1)
试试这个:
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);
//Creating a function that uses the API function...
public static bool IsConnectedToInternet()
{
int Desc;
return InternetGetConnectedState(out Desc, 0);
}
答案 1 :(得分:1)
网络连接与ping一些(随机?)网站的能力无关。 如果您位于防火墙后面,或者目标是当实际流量没有时,ping(或响应)可能会被阻止。
即使ping工作正常,也无法保证在您想要发出实际请求时连接仍然存在。 因此,最好只是执行实际请求,并确保处理可能出现的任何网络错误。
答案 2 :(得分:0)
尝试ping多长时间?如果您的应用程序锁定了30秒,这是否重要?
你有互联网连接,但是它暂时停止了吗?
互联网是关闭还是SO网站?
如果本地防火墙阻止ping怎么办?