Я пытаюсь получить IP-адрес активного сетевого адаптера, чтобы избежать использования виртуальных и других адаптеров VPN, которые в настоящее время не подключены.
На моем текущем ноутбуке следующий код возвращает 3 IP V4-адреса, и я не знаю, как получить «реальный», используемый IP-адрес из этого списка.
IPAddress[] ipV4Addresses = Array.FindAll(
Dns.GetHostEntry(String.Empty).AddressList,
a => a.AddressFamily == AddressFamily.InterNetwork);
Глядя на документ MSDN здесь , я подумал, что, возможно, я на правильном пути. Кто-нибудь получил список IP-адресов на адаптер успешно? Если это так, пожалуйста, поделитесь своей мудростью. Спасибо!
Это все прототип на данный момент. У меня есть этот код (спасибо SO!), И строка [] netAddresses всегда равна нулю, даже если компьютер подключен к сети и работает 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);
}
}
}