📌  相关文章
📜  检查网络是否可用 c# (1)

📅  最后修改于: 2023-12-03 15:10:56.296000             🧑  作者: Mango

检查网络是否可用的方法介绍

在C#中,我们可以通过多种方式来判断网络是否可用。本文将简单介绍一下常用的三种方法。

方法一:使用Ping类

Ping 是一个用来检测网络连接的类,它能够测试指定的主机名并返回其响应时间。我们可以通过代码来测试是否可以 Ping 通指定的主机,进而判断是否联网。

using System.Net.NetworkInformation;

public static bool IsNetworkAvailable()
{
    Ping ping = new Ping();
    PingReply reply = ping.Send("www.baidu.com", 1000); // 测试是否能够 Ping 通指定的主机
    return (reply.Status == IPStatus.Success); // 返回是否 Ping 通
}
方法二:使用WebClient类

WebClient 类提供了访问 Web 下载和上传文件的功能,我们可以通过其下载 Bing 的主页来判断网络是否可用。

using System.Net;

public static bool IsNetworkAvailable()
{
    try
    {
        WebClient client = new WebClient();
        using (client.OpenRead("http://www.bing.com/"))
        {
            return true; // 成功读取 Bing 的主页,说明可以联网。
        }
    }
    catch
    {
        return false; // 无法访问 Bing 的主页,说明无法联网。
    }
}
方法三:使用InternetGetConnectedState函数

InternetGetConnectedState 函数可以测试主机是否连接到 Internet 且是否准备好发送和接收数据。它是 Windows API 中的一个函数,我们需要使用 DllImport 来调用它。

using System.Runtime.InteropServices;

[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int description, int reserved);

public static bool IsNetworkAvailable()
{
    int description;
    return InternetGetConnectedState(out description, 0); // 返回 Internet 是否连接
}

以上三种方法均能够检查网络是否可用,开发者可以根据实际情况选择使用不同的方法。