获取以太网网卡IP - (第四十九讲)
当以太电脑上配置有以太网网卡和无线网卡时,可以用下面这个方法来指定IP的获取。
/// <summary>
/// 获取以太网卡 ipv4 IP
/// </summary>
/// <returns></returns>
public static string GetLocalIP()
{
//获取说有网卡信息
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in nics)
{
//判断是否为以太网卡
//Wireless80211 无线网卡 Ppp 宽带连接
//Ethernet 以太网卡
//这里篇幅有限贴几个常用的,其他的返回值大家就自己百度吧!
if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
//获取以太网卡网络接口信息
IPInterfaceProperties ip = adapter.GetIPProperties();
//获取单播地址集
UnicastIPAddressInformationCollection ipCollection = ip.UnicastAddresses;
foreach (UnicastIPAddressInformation ipadd in ipCollection)
{
// InterNetwork IPV4地址 InterNetworkV6 IPV6地址
// Max MAX 位址
if (ipadd.Address.AddressFamily == AddressFamily.InterNetwork)
return ipadd.Address.ToString();//获取 ipv4 ip
}
}
}
return null;
}
某些情况可以考虑针对UnicastIPAddressInformation属性做些判断。
官方参考:UnicastIPAddressInformation
UnicastIPAddressInformation 部分可能用到的属性如下:
成员名称 | 说明 |
---|
DuplicateAddressDetectionState | 重复的地址状态: 0:Invalid 此位址無效。 無效的位址已過期且不再指派給介面,所以應用程式不應傳送資料封包到該位址。 1:Tentative 針對位址進行的重複位址偵測程序評估尚未成功完成。 應用程式不應使用該位址,因為它尚未生效且傳送給它的封包會遭捨棄。 2:Duplicate 此位址不是唯一的。 這個位址不應指派給網路介面。 3:Deprecated 此位址是有效的,但其使用存留期 (Lease Lifetime) 已將要結束,所以不應該由應用程式使用。 4:Preferred 此位址有效且其使用不受限制。 |
IPv4Mask | IPv4掩码 |
PrefixOrigin | IP地址的首码来源: 0:Other 首碼是使用未指定的來源找到的。 1:Manual 首碼是以手動方式設定。 2:WellKnown 首碼是已知的首碼。 已知的首碼是在標準 Request for Comments (RFC) 文件中所指定,並由 Internet Assigned Numbers Authority (IANA) 或位址登錄所指派。 這類首碼會保留供特殊目的使用。 3:Dhcp 首碼是由動態主機設定通訊協定 (DHCP) 伺服器所提供。 4:RouterAdvertisement 首碼是由路由器通告所提供。 |
SuffixOrigin | IP地址的尾码来源: 0:Other 尾碼是使用未指定的來源來找到的。 1:Manual 尾碼是以手動方式設定。 2:WellKnown 尾碼是已知的尾碼。 已知的尾碼是在標準 Request for Comments (RFC) 文件中所指定,並由 Internet Assigned Numbers Authority (IANA) 或位址登錄所指派。 這類尾碼會保留供特殊目的使用。 3:OriginDhcp 尾碼是由動態主機設定通訊協定 (DHCP) 伺服器所提供。 4:LinkLayerAddress 尾碼是連結-本機尾碼。 5:Random 尾碼是以隨機方式指派。 |
NetworkInterfaceType的返回值如下(以下表格来自msdn):
成员名称 | 说明 |
---|
Unknown | 接口类型是未知的。 |
Ethernet | 网络接口使用以太网连接。 以太网在 IEEE 标准 802.3 中定义。 |
TokenRing | 网络接口使用令牌环连接。 令牌环在 IEEE 标准 802.5 中定义。 |
Fddi | 网络接口使用分布式光纤数据接口 (FDDI) 连接。 FDDI 是一组用于局域网中光纤线路上的数据传输的标准。 |
BasicIsdn | 网络接口使用基本速率接口综合业务数字网 (ISDN) 连接。 ISDN 是一组通过电话线传输数据的标准。 |
PrimaryIsdn | 网络接口使用主速率接口综合业务数字网 (ISDN) 连接。 ISDN 是一组通过电话线传输数据的标准。 |
Ppp | 网络接口使用点对点协议 (PPP) 连接。 PPP 是使用串行设备进行数据传输的协议。 |
Loopback | 网络接口是环回适配器。 此类接口通常用于测试;不通过电缆发送流量。 |
Ethernet3Megabit | 网络接口使用以太网 3 兆位/秒连接。 以太网的此版本在 IETF RFC 895 中定义。 |
Slip | 网络接口使用串行线路 Internet 协议 (SLIP) 连接。 SLIP 在 IETF RFC 1055 中定义。 |
Atm | 网络接口使用异步传输模式 (ATM) 传输数据。 |
GenericModem | 网络接口使用调制解调器。 |
FastEthernetT | 网络接口使用基于双绞线的 Fast Ethernet 连接,其数据速率为 100 兆位/秒。 此连接类型也称为 100Base-T。 |
Isdn | 网络接口使用为 ISDN 和 X.25 协议配置的连接。 X.25 允许公用网络上的计算机使用中间计算机通信。 |
FastEthernetFx | 网络接口使用基于光纤的 Fast Ethernet 连接,其数据速率为 100 兆位/秒。 此连接类型也称为 100Base-FX。 |
Wireless80211 | 网络接口使用无线 LAN 连接(IEEE 802.11 标准)。 |
AsymmetricDsl | 网络接口使用非对称数字用户线路 (ADSL)。 |
RateAdaptDsl | 网络接口使用速率自适应数字用户线路 (RADSL)。 |
SymmetricDsl | 网络接口使用对称数字用户线路 (SDSL)。 |
VeryHighSpeedDsl | 网络接口使用超高数据速率数字用户线路 (VDSL)。 |
IPOverAtm | 网络接口使用 Internet 协议 (IP) 与异步传输模式 (ATM) 相结合来传输数据。 |
GigabitEthernet | 网络接口使用 Gigabit Ethernet 连接,其数据速率为 1,000 兆位/秒(1 吉比特/秒)。 |
Tunnel | 网络接口使用隧道连接。 |
MultiRateSymmetricDsl | 网络接口使用多速率数字用户线路。 |
HighPerformanceSerialBus | 网络接口使用高性能串行总线。 |
AddressFamily的返回值如下(以下表格来自msdn):
成员名称 | 说明 |
---|
AppleTalk | AppleTalk 地址。 |
Atm | 本机 ATM 服务地址。 |
Banyan | Banyan 地址。 |
Ccitt | CCITT 协议(如 X.25)的地址。 |
Chaos | MIT CHAOS 协议的地址。 |
Cluster | Microsoft 群集产品的地址。 |
DataKit | Datakit 协议的地址。 |
DataLink | 直接数据链接接口地址。 |
DecNet | DECnet 地址。 |
Ecma | 欧洲计算机制造商协会 (ECMA) 地址。 |
FireFox | FireFox 地址。 |
HyperChannel | NSC Hyperchannel 地址。 |
Ieee12844 | IEEE 1284.4 工作组地址。 |
ImpLink | ARPANET IMP 地址。 |
InterNetwork | IP 版本 4 的地址。 |
InterNetworkV6 | IP 版本 6 的地址。 |
Ipx | IPX 或 SPX 地址。 |
Irda | IrDA 地址。 |
Iso | ISO 协议的地址。 |
Lat | LAT 地址。 |
Max | MAX 地址。 |
NetBios | NetBios 地址。 |
NetworkDesigners | 支持网络设计器 OSI 网关的协议的地址。 |
NS | Xerox NS 协议的地址。 |
Osi | OSI 协议的地址。 |
Pup | PUP 协议的地址。 |
Sna | IBM SNA 地址。 |
Unix | Unix 本地到主机地址。 |
Unknown | 未知的地址族。 |
Unspecified | 未指定的地址族。 |
VoiceView | VoiceView 地址。 |