C# 获取指定网卡的 IP 地址

中午
304 字
2 分钟
...阅读
...评论
成都

最近几天都在玩游戏,没怎么编程,感觉好空虚啊!主要是之前在 Android 上建立 wifi 热点出现了一些问题,难以进展下去,于是便耽搁了,今天决定先跳过那个问题,Android 手机之间的传输先暂时不考虑,先做一下 Android 与 PC 之间的数据传输。

刚刚主要完成了这么一件事情,根据指定的网卡获取其 ip,以便之后的 socket 使用。

会出现这个问题是因为我是利用 Win7 的 netsh 功能建立的虚拟网卡,它与其它网卡可以同时存在,这就意味着这台主机可能拥有多个 ip 地址,然而我们需要的只是我们建立的虚拟网卡的那个 ip 地址,实现方法如下:

NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces(); //获取本机所有网卡对象
foreach (NetworkInterface adapter in adapters)
{
    if (adapter.Description.Contains("Virtual")) //枚举条件:描述中包含 "Virtual"
    {
        IPInterfaceProperties ipProperties = adapter.GetIPProperties(); //获取 IP 配置
        UnicastIPAddressInformationCollection ipCollection = ipProperties.UnicastAddresses; //获取单播地址集
        foreach (UnicastIPAddressInformation ip in ipCollection)
        {
            if (ip.Address.AddressFamily == AddressFamily.InterNetwork) //只要 ipv4 的
                ipAddress = ip.Address; //获取 ip
        }
    }
}

任务完成!下面开始学习 socket 通信。

评论区
Copyright © Bean Deng