一、Networklnterface 类
这个类可以得到本机所有的物理网络接口,和虚拟机等软件利用本机的物理网络接口创建的逻辑网络接口的信息。
Networklnterface类为Mustlnherit,不能直接创建对象。故只可通过其定义的GetAllNetworkInterfaces()方法取得所需的Networklnterface对象。而后通过属性取得相关信息。
Public Shared Function GetAllNetworklnterfaces As Networklnterface()因为是Shared,故可直接引用即可使用。
本机计算机上常不止—个网络接口,故其返回值是一个包含所有网络接口的Networklnterface集合对象。可循环逐一取出各个Networklnterface对象,从而取出对应接口的信息。
二、Networklnterface属性
Id 获取网络适配器的标识符。
Name 获取网络适配器的名称。
Speed 获取网络接口的速度。
Supports 获取 Boolean 值,该值指示接口是否支持指定的协议。
Description 获取接口的描述。
IsReceiveOnly 获取 Boolean 值,该值指示网络接口是否设置为仅接收数据包。
OperationalStatus 获取网络连接的当前操作状态。
SupportsMulticast 获取 Boolean 值,该值指示是否启用网络接口以接收多路广播数据包。
NetworkInterfaceType 获取接口类型。
LoopbackInterfaceIndex 获取 IPv4 环回接口的索引。
说明:
1、NetworklnterfaceType属性是一个代表当前网络接口类型的列举类NetworklnterfaceType,表示各种接口类型的列举值,如代表 Ethernet 联机的 NetworklnterfaceType.Ethemet,代表回送接口的 NetworklnterfaceType。Loopback 等。
2、OperationalStatus属性是一个OperationalStatus列举,详细如下:
Up 网络接口已打开,可以传输数据包。
Down 网络接口无法传输数据包。
Testing 网络接口正在运行测试。
Unknown 网络接口的状态未知。
Dormant 网络接口未处于传输数据封包的状况,它正在等待外部亊件。
NotPresent 网络接口由于缺少组件而无法传输数据封包,缺少的组件通常是硬件组件。
LowerLayerDown 网络接口无法传输数据封包,因为它是在一或多个其他接口上执行,而这些“低层" 接口中至少有一个已经关闭。
三、Networklnterface方法
GetIsNetworkAvailable 指示是否有任何可用的网络连接。
GetAllNetworkInterfaces 返回描述本地计算机上的网络接口的对象。
GetIPProperties 返回描述此网络接口的配置的对象。
GetPhysicalAddress 返回此适配器的媒体访问控制 (MAC) 或物理地址。
说明:
1、GetIPProperties()方法返回的是 IPInterfaceProperties 对象,该对象提供支持IPv4或IPv6的网络接口相关信息。
Public MustOverride Function GetIPProperties As IPInterfaceProperties2、GetPhysicalAddress 返回一个 PhysicalAddress 对象,该对象代表MAC或实体地址。
MustOverride Function GetPhysicalAddress As PhysicalAddress3、Support()方法用来指出接口是否支持指定的通信协议
Public MustOverride Function Supports (networklnterfaceComponent As NetworklnterfaceComponent )As Boolean参数 networklnterfaceComponent 是列举类,表示网络协议,列举值只有两种,IPv4与IPv6。
四、举例
列举本机网络接口及信息。
Imports System.Net.NetworkInformation Public Class Form1 Private Sub btnInterface_Click(sender As Object,e As EventArgs) Handles btnInterface.Click Dim adapter As NetworkInterface Dim adapters As NetworkInterface() '加括号表示数组(多个) Dim strInfo As String = "" Dim intNum As Int32 adapters = NetworkInterface.GetAllNetworkInterfaces '数组为空或者数组无成员,说明无接口,退出 If adapters.Equals(Nothing) Or adapters.Length < 1 Then txtInterface.Text = "无网络接口." Return End If For Each adapter In adapters '列举集合每一个接口元素 intNum += 1 strInfo &= "网络接口 " & intNum.ToString & vbCrLf strInfo &= "----------------" & vbCrLf strInfo &= "接口描述:" & adapter.Description & vbCrLf strInfo &= "适配器标识符:" & adapter.Id & vbCrLf strInfo &= "是否只接收封包:" & adapter.IsReceiveOnly.ToString & vbCrLf strInfo &= "接口名称:" & adapter.Name & vbCrLf strInfo &= "当前操作状态:" & adapter.OperationalStatus.ToString & vbCrLf strInfo &= "接口速度:" & adapter.Speed.ToString & vbCrLf strInfo &= "是否接收多路封包:" & adapter.SupportsMulticast.ToString & vbCrLf strInfo &= "是否支持IPv4:" & adapter.Supports(NetworkInterfaceComponent.IPv4).ToString & vbCrLf strInfo &= "是否支持IPv6:" & adapter.Supports(NetworkInterfaceComponent.IPv6).ToString & vbCrLf strInfo &= "MAC地址:" & adapter.GetPhysicalAddress.ToString & vbCrLf strInfo &= "接口描述:" & adapter.Description.ToString & vbCrLf strInfo &= vbCrLf & vbCrLf Next txtInterface.Text = strInfo End Sub End Class