C# Win32_NetworkAdapter查询中的NetAddress始终为空
我正在尝试获取活动网络适配器的IP地址,以避免当前未连接的虚拟和其他VPN适配器 在我当前的笔记本电脑上,以下代码返回3个IP V4地址,我不知道如何从该列表中获取“真实的”正在使用的IP地址C# Win32_NetworkAdapter查询中的NetAddress始终为空,c#,networking,wmi,C#,Networking,Wmi,我正在尝试获取活动网络适配器的IP地址,以避免当前未连接的虚拟和其他VPN适配器 在我当前的笔记本电脑上,以下代码返回3个IP V4地址,我不知道如何从该列表中获取“真实的”正在使用的IP地址 IPAddress[] ipV4Addresses = Array.FindAll( Dns.GetHostEntry(String.Empty).AddressList, a => a.AddressFamily == Address
IPAddress[] ipV4Addresses = Array.FindAll(
Dns.GetHostEntry(String.Empty).AddressList,
a => a.AddressFamily == AddressFamily.InterNetwork);
看着MSDN文档,我想也许我的思路是对的。是否有人成功获得每个适配器的IP地址列表?如果是这样,请分享你的智慧。谢谢
这是所有在这一点上的原型。我有这段代码(多亏了SO!),字符串[]netaddress始终为空,即使计算机连接到网络并具有正常工作的IP地址
string wmiQuery = "SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionId != NULL";
ManagementObjectSearcher moSearch = new ManagementObjectSearcher(wmiQuery);
ManagementObjectCollection moCollection = moSearch.Get();
foreach (ManagementObject mo in moCollection)
{
Console.WriteLine("{0} is {1}", mo["Name"], mo["NetConnectionStatus"]);
string[] netAddresses = (string[])mo["NetworkAddresses"];
if (netAddresses != null)
{
foreach (string netAddress in netAddresses)
{
Console.WriteLine("\tnet addresses:");
Console.WriteLine("\t\t{0}", netAddress);
}
}
}
没有“真正的”IP地址。您发送的每个数据包都将根据适配器的度量和可用的路由路径路由到其目的地。通过执行以下操作,您可以猜测哪个IP主要用于internet流量:
此属性尚未实现。默认情况下,它返回一个空值。查看WIn32\u NetworkAdapter配置,通过使用WIn32\u NetworkAdapter中的InterfaceIndex,您应该能够获得分配给该nic的IP地址所需的配置。定义“真实”。可以同时使用任何或所有IPv4地址。如果你的电脑有两个或两个以上的“真实”NIC怎么办?@Gaz,很抱歉用了非技术术语“真实”。我指的是当前插入的NIC,用于通过浏览器与internet通信。我知道一次可能会插入多个NIC,但在我们的用户群中,这将是极为罕见的。RTFM为我。对不起。