Как да получите първия nic, както е показано в IPConfig

Сървър, на който тествам, има 4 nic. Това, от което се нуждая, е начин в C# кода да получа първата мрежова карта, за която ми е казано, че трябва да е първата мрежова карта, която се показва, когато изпълня командата IPCONFIG.

Имам следния код:

   public static IPAddress GetIPAddresses(string hostName, int index)
    {
        var entry= Dns.GetHostEntry(hostName);
        var addresses = new List<IPAddress>();

        for (int i = 0; i < entry.AddressList.Length; i++)
        {
            if (entry.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
                addresses.Add(entry.AddressList[i]);
        }
        return addresses.ToArray()[index];
    }

Така че, ако предам 0, надявам се, че това ще бъде първата NIC, както в IPCONFIG. Дали това е правилно?

Благодаря


person JD.    schedule 07.08.2013    source източник
comment
Текущият ви код ще ви върне IP адрес от какъвто и да е механизъм за търсене, който ще се използва (напр. DNS/Wins/хост файл) за даденото име на хост, което може да бъде доста произволно. Ще работи само ако всеки NIC има само 1 IP адрес и името на хоста се съпоставя само с този един IP адрес. Може би трябва да изброите NIC като напр. stackoverflow.com/questions/11677815/   -  person nos    schedule 07.08.2013
comment
Благодаря за коментара Ако филтрирам само по ip4 адреси, това означава ли, че първият е първи в списъка IPCONFIG?   -  person JD.    schedule 07.08.2013
comment
Същото ще важи, ако го направите.   -  person nos    schedule 07.08.2013
comment
Същото като в може да е доста случайно, както споменахте по-горе? Ако е така, как да получа първия IPCONFIG nic?   -  person JD.    schedule 07.08.2013
comment
Това, което трябваше да напиша, използвах NetworkInterface.GetAllNetworkInterfaces() и филтрирах ipv4 адресите. Щеше ли да работи? Освен това може да има само един IP адрес на NIC, така че трябва ли да се тревожа за механизма за търсене?   -  person JD.    schedule 07.08.2013
comment
добре, ние не знаем как Microsoft е кодирал инструмента ipconfig, така че е доста трудно да се каже - можете да го тествате емпирично, като сравните изхода си с ipconfig на различни машини. NetworkInterface.GetAllNetworkInterfaces() вероятно е най-добрият ви залог досега. Като цяло NIC със сигурност може да има повече от 1 IP адрес, въпреки че това може да не е от значение за вашия конкретен случай.   -  person nos    schedule 07.08.2013