这几天写网络编程,遇到了些关于ip地址的问题,做了一下研究,把结果跟大家分享下。
现在一般笔记本都配有无线网卡,和以太网卡,有些台式机也配备了无线网卡。而且win7下是支持ipv6协议的,那么这时候,获取那张网卡的ip,获取ipv4还是ipv6还是其他的IP地址,就成了问题。
下面是解决代码:
private void Form1_Load(object sender, EventArgs e)
{
//获取说有网卡信息
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)
//判断是否为ipv4
label1.Text = ipadd.Address.ToString();//获取ip
}
}
}
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 地址。 |
希望这篇文章能对大家有所帮助,多写好代码!
浙公网安备 33010602011771号