我想从我的电脑上获取 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 地址。