怎样使用C# 获取WIFI的连接状态?

怎样使用C# 获取WIFI的连接状态?

行文导航

  1. 思路

  2. 问题得到解决

  3. 代码展示

  4. 断开与连接WIFI状态效果

  5. 在OrangePI Linux Arm32上的测试效果

C# 获取WIFI的连接状态

本文是在知道WIFI网络设备名称的情况下,获取该设备的连接状态,同样也是可以判断是否已连接广域网。

1. 思路

起初是想着有没有那样一个直接访问设备信息,通过这个返回的信息来得到我想要的状态,查了一个资料在Linux上有个libiw,这个包能扫描到的ssid的相关信息,并不是我想要的。

那么只能从另外一个方式入手,首先取得设备的Gateway信息,然后Ping这个Gateway.IPAddress会得到Ping的结果,从这个结果来判断是否连接是否成功。

2.问题得到解决

通过思路2,查找相关的C#方面的资料,果然有相关的API, 通过NetworkInterface这个类来得到所有的网络设备信息,然后再根据条件找出我关注的网络设备,再通过Ping这个类SendPingAsync取得Ping的结果,最后由结果来判别连接状态。

3.代码展示

NetworkInterface[] nfaces = NetworkInterface.GetAllNetworkInterfaces();
var nface = nfaces.First(x => x.Name == "WLAN 2");
if (nface == null)
{MessageBox.Show("WLAN2 - Wifi未连接.");return;
}
var ipProperties = nface.GetIPProperties();
// 获取默认网关
var defualtGateway = ipProperties.GatewayAddresses[0];
Ping ping = new Ping();
var treplay = ping.SendPingAsync(defualtGateway.Address);
var replay = treplay.Result;
MessageBox.Show(replay?.Status == IPStatus.Success? $"WLAN2 - Wifi已连接. [Ping {defualtGateway.Address} Status: {replay?.Status}]": $"WLAN2 - Wifi未连接. [Ping {defualtGateway.Address} Status: {replay?.Status}]");

4.断开与连接WIFI状态效果

未连接状态
已连接状态

5.在OrangePI Linux Arm32上的测试效果

Microsoft (R) Build Engine version 16.7.1+52cd83677 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.Determining projects to restore...Restored /root/OrangePICallbox/WifiConnection/WifiConnection.csproj (in 1.29 sec).WifiConnection -> /root/OrangePICallbox/WifiConnection/bin/Debug/netcoreapp3.1/WifiConnection.dllBuild succeeded.0 Warning(s)0 Error(s)Time Elapsed 00:00:18.64
root@orangepipcplus:~/OrangePICallbox/WifiConnection# dotnet run
wlan0 - Wifi已连接. [Ping 192.168.31.1 Status: Success]
root@orangepipcplus:~/OrangePICallbox/WifiConnection#


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 ASP.NET Core 中使用 URL Rewriting 中间件

URL rewriting 是根据预先配置好的一组规则去修改 request url,值得注意的是:URL Rewriting 的重写功能和 url 重定向 是两个概念,本篇我们就来讨论下如何在 ASP.NET Core 中对 url 进行 rewriting。安装 URL Rewriting 中间件 要想使用 URL …

睡眠分期matlab代码,非接触式睡眠分期方法与流程

本发明属于雷达监测技术领域,特别是一种非接触式睡眠分期方法。背景技术:传统的呼吸睡眠监护系统主要依靠贴附于人体的接触式传感器、电极进行测量,从而实时获得人体的生命参数信号,这些方法都需要直接或间接地接触人体&#xff0…

self php语法,PHP代码审计之关于PHP_SELF的简单利用

这两天突然看到 https://blog.ripstech.com/2020/sql-injection-impresscms/,想着复现一下,记录一下学习过程。漏洞分析漏洞复现首先我们先下载安装一下这个 cms,然后直接访问:http://127.0.0.1:81/admin.php/modules/system and …

叮咚!你有一份来自明源云的圣诞邀约

请查收,来自明源云的圣诞邀约~

使用Select.HtmlToPdf 把html内容生成pdf文件

概述.NET的SelectPdf Html到Pdf转换器-社区版是.NET的SelectPdf库中提供的功能强大的html到pdf转换器的免费版本。转换器提供了许多强大的选项(将任何网页转换为pdf,将任何html字符串转换为pdf,html5 / css3 / javascript支持,页眉…

java先进先出 循环队列,JavaScript队列、优先队列与循环队列

队列是一种遵从先进先出(FIFO)原则的有序集合队列在尾部添加新元素,从顶部移除元素队列的理解队列在我们生活中最常见的场景就是排队了队列这个名字也已经很通俗易懂了和栈很像,这不过队列是先入先出的数据结构队列的前面是队头队列的后面是队尾出队从队…

Abp小试牛刀之 图片上传

图片上传是很常见的功能,里面有些固定的操作也可以沉淀下来。本文记录使用Abp vNext做图片上传的姿势。目标上传图片----->预览图片----->确定保存支持集群部署实现思路:1. 上传图片要使用WebAPI特定媒体类型:multipart/form-data;2. 因…

php 发邮件 500错误,使用PHP发送邮件出现这个错误:The following From address failed:xxxx@163.com...

使用了TP框架!以下是源码:namespace ApiController;use ThinkController;class EmailController extends Controller{public function test(){$msg pmail(493107977qq.com,午夜DJ,封装测试,hello world);echo $msg;}?php>return array(//配置项>配置值TMPL_PARSE_STRIN…

.Net Conf 2020 之回顾

Intro上周 .NET Conf 在苏州成功举办了第二届活动,一年一度的 .NET 盛会又来了,今年大会依然有许多从外地过来参加的开发者们,也有很多讲师也是从外地赶过来为我们分享。虽然今年是疫情的一年,并没有影响 .NET Conf 参会者们的热情…

php里面电话验证码,PHP的中问验证码

Class code{var $width 160; //图片的宽var $hight 40; //图片的高var $image;var $red 223; //图片的RGB颜色var $green 225; //红var $blue 227 ;//绿var $pix 227 ;//蓝var $pixcolor; //杂色颜色;var $pixred 242; //红var $pixgreen 168;//绿var $pixblue 162; //蓝var…

如何使用 C# 在异步代码中处理异常

异常处理是一种处理运行时错误的技术,而 异步编程 允许我们在处理资源密集型的业务逻辑时不需要在 Main 方法或者在 执行线程 中被阻塞,值得注意的是,异步方法和同步方法的异常处理机制是不一样的,本篇我们就来讨论下如何在异步方…

在oracle中游标的操作,Oracle中的游标和函数详解

Oracle中的游标和函数详解1.游标游标是一种 PL/SQL 控制结构;可以对 SQL 语句的处理进行显示控制,便于对表的行数据逐条进行处理。 游标并不是一个数据库对象,只是存留在内存中。操作步骤:声明游标打开游标取出结果,此…

对 Redis 中的有序集合SortedSet的理解

本篇说一下Redis中的 有序集合类型,曾几何时,我们想把所有数据存到内存中的 数据结构 中,但为了多机器共享内存,不得不将这块内存包装成wcf单独部署,同时还要考虑怎么序列化,烦心事太多太多。。。后来才知道…

php查询类似abab,ABAB中的正则表达式匹配编号(必须相同) - php

我已经搜索了许多答案来匹配ABAB pattern,这些答案与1212或2323的任意字符匹配,已阅读this too但我发现匹配ABAB模式的模式不起作用,它也匹配4444我试图找出模式来匹配以下主题:232345459898但可能不匹配4444或5555,因…

代码质量在「内卷时代」的重要性

这里是Z哥的个人公众号每周五11:45 按时送达当然了,也会时不时加个餐~我的第「173」篇原创敬上大家好,我是Z哥。提到代码质量,不知道你的脑海中浮现出的第一个词是什么?规范?可读性?…

oracle asm 配置失败,Oracle ASMLib安装与配置

什么是ORACLE ASMLib?ASMLib 是一个适用于 Oracle 数据库 的自动存储管理(ASM)功能的支持库。ASM简化了数据库和管理,它不再需要 DBA 直接管理可能数千个的 Oracle 数据库文件,而只需管理分配给 Oracle 数据库的磁盘组。ASMLib 令使用 ASM 的…

.NET Core AWS S3云存储

【导读】最近有需要用到AWS S3云存储上传附件,这里对利用.NET或.NET Core在调用SDK APi需要注意的一点小问题做个记录,或许能对后续有用到的童鞋提供一点帮助Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,提供行业领先的可…

oracle数据库查看size,[oracle] 查看oracle数据库表空间使用率,定位数据size较大对象...

1.查看表空间使用情况with ts as (SELECT d.tablespace_name "Name", d.status "Status",TO_CHAR (NVL (a.MAXBYTES / 1024 / 1024 /1024, 0), 99,999,990.90) "Maxsize (G)",TO_CHAR (NVL (a.BYTES / 1024 / 1024 /1024, 0), 99,999,990.90) &q…

如何解决在ASP.NET Core中找不到图像时设置默认图像

背景web上如果图片不存在一般是打xx,这时候一般都是会设置默认的图片代替。现在用中间件的方式实现统一设置, 一次设置,全部作用 。此示例演示如何解决在ASP.NET Core中找不到图像时设置默认图像先决条件Visual Studio 2017或更高版本。启用V…

缩减oracle日志,[20180829]减少日志生成量.txt

[20180829]减少日志生成量.txt--//最近一段时间优化一下生产数据库,主要是问题比我预计要严重,实际上exadata实在太快了,把许多问题都给掩盖了.--//实际上这个问题很早就存在,我实在不想提,基于国内许多应用都可能存在类似问题,还是写一下.SQL ordered by Executions%CPU - CPU…