.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;
}

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

相关推荐
美丽的欣情6 小时前
RK3588 Debian 交叉编译环境搭建(Windows + VMware Debian + CMake)
运维·windows·debian
勤劳打代码7 小时前
Flutter 架构指南 —— windows 平台安装拆解
windows·架构
aramae11 小时前
C++11:现代C++的里程碑
c语言·开发语言·c++·windows·git·后端
执行x11 小时前
wsl2安装+桥接模式+固定IP
linux·windows·ubuntu
小堂子这厢有礼了11 小时前
Chet.Admin 权限模型:菜单级 + 按钮级 + 行级三层防护
前端·后端·信息可视化·前端框架·.net
做萤石二次开发的哈哈12 小时前
如何接入萤石开放平台 ERTC Windows SDK?
windows·音视频·萤石开放平台
橙臣程12 小时前
在 Windows 中使用 WSL2 搭建 Ubuntu 开发环境
linux·windows·ubuntu
霸道流氓气质13 小时前
Windows 本地搭建 CDC 全链路测试环境(Kafka+Canel+binlog+SpringBoot)
windows·spring boot·kafka
郝开13 小时前
Windows 安装 Ostris AI Toolkit
人工智能·windows·toolkit·ai toolkit
AneiangSoft1 天前
Aneiang.Yarp v2.3.0.25:让 AI 成为你的 API 网关运维副驾驶
网关·.net·代理·dashboard·yarp