📅  最后修改于: 2023-12-03 15:10:56.296000             🧑  作者: Mango
在C#中,我们可以通过多种方式来判断网络是否可用。本文将简单介绍一下常用的三种方法。
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 类提供了访问 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 函数可以测试主机是否连接到 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 是否连接
}
以上三种方法均能够检查网络是否可用,开发者可以根据实际情况选择使用不同的方法。