网卡信息检测与网络流量检测
文章目录
每台计算机进行网线通讯,都要借助一个硬件设备, 网卡,简称 NIC,
NIC
是
Network Interface Controller
的缩写。网卡则负责将
比特流转换成电信号发送出去和将检测到的
电信号转换成比特流并接收。
网络适配器:
-
又称网卡是连接计算机与网络的硬件设备。
-
整理计算机上发往网线上的数据,并将数据分解为适当大小的数据包之后向网络上发送。
在C#中,提供了System.Net.NetworkInformation命名空间,来提供网卡的相关信息。
其中包括:
- 对本机网卡相关信息的检测
- 本机有多少网卡,网卡名称、速度、硬件地址等。
- 对本机网络流量的检测
- 网络连接配置、接收与发送的数据包等。
网卡信息检测相关类
Network Interface类
提供了网络适配器的配置和统计信息:
-
网络适配器个数
-
网络适配器型号
-
网络适配器的速度
-
网络适配器MAC地址
-
网络适配器连接是否可用
每个网络适配器都包含一个NetworkInterface对象与之对应。
属性及方法 | 说明 |
---|---|
Name属性 | 获取网络适配器的名称 |
Speed属性 | 获取网络适配器的速度(*bit/*秒) |
GetAllNetworkInterfaces方法 | 返回描述本地计算机上的所有网络适配器对象 |
GetIPProperties方法 | 返回描述此网络适配器配置的对象 |
GetIsNetworkAvailable方法 | 指示是否有任何可用的网络连接 |
GetPhysicalAddress方法 | 返回此适配器的媒体访问控制(MAC)地址 |
Supports方法 | 指示接口是否支持指定的协议(IPv4或IPv6) |
获取网卡的信息
private static void NetworkInterfaces()
{
#region NetWorkInterface
//利用NetworkInterface类提供的静态方法得到NetworkInterface类型的数组。
NetworkInterface[] networkInterface = NetworkInterface.GetAllNetworkInterfaces();//声明并初始化了一个 NetworkInterface类的对象数组。
Console.WriteLine($"网络适配器的个数为:{networkInterface.Length}");
Console.WriteLine($"是否有可以用网络连接:{NetworkInterface.GetIsNetworkAvailable()}");
Console.WriteLine();
foreach (NetworkInterface network in networkInterface)
{
Console.WriteLine($"网卡名字:{network.Name}");
Console.WriteLine($"物理地址:{network.GetPhysicalAddress()}");
Console.WriteLine($"速度:{network.Speed}");
Console.WriteLine($"网卡ID:{network.Id}");
Console.WriteLine($"网卡描述:{network.Description}");
Console.WriteLine($"是否仅接受数据包:{network.IsReceiveOnly}");
Console.WriteLine($"是否支持IPV4:{network.Supports(NetworkInterfaceComponent.IPv4)}");
Console.WriteLine($"是否支持IPV6:{network.Supports(NetworkInterfaceComponent.IPv6)}");
Console.WriteLine("-----------------------------------------------------------------");
}
网卡名字:本地连接* 1
物理地址:144F8A2158EB
速度:-1
网卡ID:{
FA9901D2-C3AD-412B-BCC2-D6FF592EE29B}
网卡描述:Microsoft Wi-Fi Direct Virtual Adapter
是否仅接受数据包:False
是否支持IPV4:True
是否支持IPV6:True
IPInterfaceProperties类
-
检测本机所有网络适配器支持的各种地址
- Dns服务器的IP地址、网关地址以及多路广播地址。
-
IPInterfaceProperties类是抽象类,不能实例化。
- 通过NetworkInterface对象的GetIPProperties()获得其实例
IPInterfaceProperties类常用的属性和方法
属性及方法 | 说明 |
---|