0

我想从我的电脑上获取 IP 信息。我可以得到网卡的描述、IP 地址和子网掩码,这是我的代码:

foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
        {
            if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
            {
                foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
                {

                    if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                    {
                        Nics.Add(ni.Description);
                        IPs.Add(ip.Address.ToString());
                        SubnetMasks.Add(ip.IPv4Mask.ToString());


                    }
                }
            }
        }

所以首先,这向我展示了一些奇怪的网卡,当我输入“ipconfig / all”时我什至看不到这些网卡,蓝牙获得IP地址之类的东西。有没有办法让我得到一个有连接的?并获得默认网关?

编辑:

“Nics”、“IPs”和“SubnetMasks”是 ArrayLists。

编辑2:

我使用了这段代码:

string asdf = "";
        IPHostEntry host;
        host = Dns.GetHostEntry(Dns.GetHostName());
        foreach (IPAddress ip in host.AddressList)
        {
            if (ip.AddressFamily == AddressFamily.InterNetwork)
            {
                MessageBox.Show(ip.ToString());
                asdf = ip.ToString();
            }
        }
        textBox1.Text = asdf;

但问题是,我有 VMWare 和其他一些具有 IP 地址的 NICS,MessageBox 向我显示了所有的 IP 地址 - 是否总是,使用的是最后一个?我的意思是,如果我在另一台 PC 上使用此代码并且使用的 IP 地址不是 host.AddressList 中的最后一个,那么它将显示错误的 IP 地址。

4

0 回答 0