.Net 6.0 Windows平台如何判断当前电脑是否联网

最近在工作中开发需要判断当前电脑是否联网的需求,在网上找了一个调用window API来判断本机是否联网。具体请看下面介绍:

1.方法一(调用winAPI)

cs 复制代码
[DllImport("wininet")]
public static extern bool InternetGetConnectedState(out int conState, int reder);

/// <summary>
/// 判断本机是否联网
/// </summary>
/// <returns></returns>
[Obsolete("当前方法不准,在以太网卡已连接状态,实际不能上网(无Internet访问),会误判为联网状态")]
public static bool CheckInternetAccessOld()
{
    return InternetGetConnectedState(out _, 0) ? true : false;
}

这个winAPI在使用以太网卡连接的时候,会存在误判的情况。(明明不能上网,却返回true)

2.方法2(获取当前网络状态)【推荐!!!】

cs 复制代码
/// <summary>
/// 检查本机是否联网,联网返回true,否则返回false
/// </summary>
/// <returns></returns>
public static bool CheckInternetAccess()
{
    var connectProfile = NetworkInformation.GetInternetConnectionProfile();
    if (null == connectProfile) return false;//没有连接的网络
    var networkLevel = connectProfile.GetNetworkConnectivityLevel();
    if (networkLevel == NetworkConnectivityLevel.InternetAccess)
        return true;//Internet 访问
    else
        return false;
}

经过对比测试,方法二可以弥补方法一以太网卡误判的情况。建议使用这种方式。

相关推荐
芳草萋萋鹦鹉洲哦8 小时前
NSSM注册服务并设置开机自启动
windows
loriloy9 小时前
Python 环境管理工具 pyenv-win (windows版本)
windows·python·pyenv-win
x***r1519 小时前
Python 3.9.7安装教程 Windows版:解压+管理员运行+自定义路径+IDLE快捷方式指南
windows
William Dawson9 小时前
【Java Stream 流:高效、优雅的集合操作 ✨】
java·windows·python
金刚狼8810 小时前
Active和Passive两种扫描模式下,接收到的BLE广播报文的不同
windows
半夜删你代码·11 小时前
PC端上拉加载效果
windows
武藤一雄11 小时前
C#万字详解 栈与托管堆 的底层逻辑
windows·microsoft·c#·.net·.netcore
martian66511 小时前
Tauri 2.10 + NSIS 打包踩坑实录:解决 Windows 系统 NSIS 下载失败的方法(附资源包)
windows
波波00711 小时前
.NET真的被上海信创排除在外?
.net
小江的记录本12 小时前
【Docker】 Docker 全平台部署(Linux / Windows / MacOS)与 前后端分离项目 容器化方案
java·linux·windows·http·macos·docker·容器