一种优雅/简单的方式来检查互联网是否可用

时间:2010-03-16 05:47:46

标签: .net windows tcp

我快速搜索了如何检查互联网是否可用。他们中的大多数人都在谈论对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
}

3 个答案:

答案 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怎么办?