获取以太网网卡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 地址。 |