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

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

相关推荐
hnlucky19 分钟前
Windows 上安装下载并配置 Apache Maven
java·hadoop·windows·学习·maven·apache
洛阳泰山2 小时前
Windows系统部署MongoDB数据库图文教程
数据库·windows·mongodb
阿斯顿法国红酒快2 小时前
Windows系统安全加固
网络·windows·安全·网络安全·系统安全·ddos
C++ 老炮儿的技术栈3 小时前
自定义CString类与MFC CString类接口对比
c语言·c++·windows·qt·mfc
不讲废话的小白4 小时前
Windows系统永久暂停更新操作步骤
windows
python算法(魔法师版)6 小时前
.NET NativeAOT 指南
java·大数据·linux·jvm·.net
正经教主6 小时前
【基础】Windows开发设置入门4:Windows、Python、Linux和Node.js包管理器的作用和区别(AI整理)
linux·windows·python·包管理器
明月与玄武7 小时前
Pywinauto:轻松实现Windows桌面自动化实战
windows·pywinauto·windows桌面自动化
渴望技术的猿7 小时前
Windows 本地部署MinerU详细教程
java·windows·python·mineru
bbsh209910 小时前
动易.NET系列产品:Safari浏览器登录后台提示登录信息过期的问题
java·.net·safari