C#怎么判断电脑是否联网

news/2024/12/12 0:11:24/

在 C# 中,可以通过几种方法检测计算机是否联网。以下是几种常用的方式:

1. 使用 System.Net.NetworkInformation.Ping

通过发送一个 Ping 请求到公共 DNS 服务器(如 Google 的 DNS 8.8.8.8)来检测是否联网。这是最常见的一种方法,适用于大部分场景。

using System;
using System.Net.NetworkInformation;class Program
{static void Main(string[] args){if (IsConnectedToInternet()){Console.WriteLine("已连接到互联网");}else{Console.WriteLine("未连接到互联网");}}public static bool IsConnectedToInternet(){try{using (Ping ping = new Ping()){PingReply reply = ping.Send("8.8.8.8", 1000); // Ping Google DNSreturn reply.Status == IPStatus.Success;}}catch (PingException){return false;}}
}

2. 使用 System.Net.NetworkInformation.NetworkInterface 检查网络状态

此方法可以检查计算机是否有启用的网络接口并且该接口是否连接到网络。你可以遍历所有网络接口并检查其状态。

using System;
using System.Net.NetworkInformation;class Program
{static void Main(string[] args){if (IsConnectedToInternet()){Console.WriteLine("已连接到互联网");}else{Console.WriteLine("未连接到互联网");}}public static bool IsConnectedToInternet(){bool isConnected = false;foreach (NetworkInterface netInterface in NetworkInterface.GetAllNetworkInterfaces()){if (netInterface.OperationalStatus == OperationalStatus.Up && netInterface.NetworkInterfaceType != NetworkInterfaceType.Loopback){isConnected = true;break;}}return isConnected;}
}

3. 使用 System.Net.NetworkInformation.NetworkInterface 结合 DNS 查询

如果只是想知道是否有可用的网络连接,可以结合 DNS 查询来确定是否可以访问外部网站:

using System;
using System.Net.NetworkInformation;
using System.Net;class Program
{static void Main(string[] args){if (IsConnectedToInternet()){Console.WriteLine("已连接到互联网");}else{Console.WriteLine("未连接到互联网");}}public static bool IsConnectedToInternet(){try{// 尝试访问公共的 DNS 服务(如 Google 的 8.8.8.8)Dns.GetHostEntry("www.google.com");return true;}catch (Exception){return false;}}
}

4. 使用 Windows.Networking.Connectivity.NetworkInformation(UWP 应用)

如果你的应用是一个 UWP (Universal Windows Platform) 应用程序,你可以使用 Windows.Networking.Connectivity.NetworkInformation 类来检查网络状态。

using System;
using Windows.Networking.Connectivity;class Program
{static void Main(string[] args){if (IsConnectedToInternet()){Console.WriteLine("已连接到互联网");}else{Console.WriteLine("未连接到互联网");}}public static bool IsConnectedToInternet(){var internetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();return internetConnectionProfile != null && internetConnectionProfile.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess;}
}

5. 通过 HttpWebRequestHttpClient 请求

如果想要更精确地判断是否能够进行 HTTP 请求,特别是在需要验证特定服务是否在线时,可以使用 HttpWebRequestHttpClient 来尝试连接互联网。

using System;
using System.Net.Http;
using System.Threading.Tasks;class Program
{static async Task Main(string[] args){if (await IsConnectedToInternet()){Console.WriteLine("已连接到互联网");}else{Console.WriteLine("未连接到互联网");}}public static async Task<bool> IsConnectedToInternet(){try{using (HttpClient client = new HttpClient()){// 尝试访问 Google 网站HttpResponseMessage response = await client.GetAsync("http://www.google.com");return response.IsSuccessStatusCode;}}catch (Exception){return false;}}
}

总结:

  • Ping 请求:最常用的方式,简单且有效。
  • 网络接口检查:适合检查是否有启用的网络接口。
  • DNS 查询:通过 DNS 查询也能确认网络连接是否可用。
  • HttpWebRequest:用于验证网络是否可访问特定网站或服务。

http://www.ppmy.cn/news/1554346.html

相关文章

矩阵的加减

加法和减法都符合MATLAB的五种兼容模式&#xff0c;以加法为例: 1. A A A为一个矩阵&#xff0c; B B B为一个值 A B AB AB表示将矩阵 A A A中的每一个元素都加上 B B B 2. A A A为一个矩阵&#xff0c; B B B为一个矩阵且 A A A和 B B B同型矩阵 A B AB AB表示将矩阵 A …

Lumoz的ZK算力网络,加速以太坊3.0的到来

1.Lumoz 模块化计算层 Lumoz 协议是一个全球分布式模块化计算协议&#xff0c;致力于提供先进的零知识证明&#xff08;ZKP&#xff09;服务&#xff0c;支持ZK技术的发展&#xff0c;为ZK、AI等前沿技术提供强大的算力支撑。面对当前零知识计算领域计算成本的挑战&#xff0c…

013-SpringBoot 定义优雅的全局异常处理方式

SpringBoot 定义优雅的全局异常处理方式 一、概述二、定义全局异常接口三、定义全局异常枚举四、定义全局基础异常五、定义全局基础业务异常六、定义全局返回七、定义全局返回工厂八、全局异常处理九、实体类十、Controller十一、效果展示一、概述 在日常项目开发中,异常是常…

Python绘制3D散点图使用颜色表示数值大小

一、摘要 在进行数据可视化时&#xff0c;对于一元函数f(x)y数据我们可以使用二维平面图显示&#xff0c;x轴表示自变量&#xff0c;y轴表示函数值&#xff1b;对于二元函数f(x,y)z数据我们也可以使用三维图可视化&#xff0c;x和y轴表示自变量&#xff0c;z轴表示函数值。由于…

Linux 常用命令大全:文件管理、系统信息、网络操作

Linux 系统提供了丰富的命令行工具&#xff0c;用于各种操作和管理任务。以下是一些常用的 Linux 命令及其简要说明&#xff1a; 文件和目录操作 ls - 列出目录内容 ls -l /path/to/directorycd - 更改目录 cd /path/to/directorypwd - 显示当前工作目录 pwdmkdir - 创建目录 …

android 富文本及展示更多组件

模拟微博 #热贴 和 用户 的这种 富文本形式组件&#xff0c;不说了&#xff0c; 直接上代码 package com.tongtong.feat_watch.viewimport android.content.Context import android.graphics.Color import android.util.AttributeSet import android.view.LayoutInflater impo…

最新车企E/E电子电气架构搜集

蔚来NT3技术架构及EEA 在NT3技术架构中&#xff0c;蔚来所采用的EEA方案为区域控制器架构设计&#xff0c;此架构的核心由中央处理单元、四个分布式区域控制器以及高速以太网共同搭建起基础框架。这三部分紧密协作&#xff0c;旨在实现一个既能自适应又能自我学习的系统&#x…

【前端】JavaScript 和 JSON:深入解析与实战

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;JSON 的基础概念1. 什么是 JSON&#xff1f;JSON 的关键特性JSON 示例 2. JSON 与 JavaScript 对象的区别示例对比 &#x1f4af;JSON 的操作1. JSON 的序列化与反序列化…