Как получить MAC-адрес до подключения? - PullRequest
1 голос
/ 29 июня 2010

У меня есть ситуация, когда я пингую диапазон IP-адресов в сети.Затем я пытаюсь подключиться к успешным пингам.

Моя цель - подключиться к конкретному оборудованию с определенным префиксом MAC.Например, когда я проверяю диапазон 100 IP-адресов, я могу получить 20 ответов.Эти ответы включают в себя компьютеры, принтеры и, возможно, оборудование, которое я пытаюсь подключить.

В настоящее время происходит следующее: когда я пытаюсь подключиться к чему-либо другому, кроме необходимого мне оборудования (например, к компьютеру, принтеру)Тайм-аут соединения.

Это нормально, но не эффективно.Я хотел бы отфильтровать список успешных проверок с помощью MAC-адреса, однако мне пока не удалось найти решение, которое позволило бы мне искать MAC-адрес до подключения оборудования.

У меня естьпросмотрел большинство вопросов по MAC здесь, но ни один не соответствовал моим потребностям.

Есть идеи ??

1 Ответ

4 голосов
/ 29 июня 2010

Мне удалось найти решение здесь: http://pinvoke.net/default.aspx/iphlpapi/SendARP.html

Следующий метод возвращает MAC

internal static string GetMAC(string ip)
    {
        IPAddress dst = IPAddress.Parse(ip); // the destination IP address Note:Can Someone give the code to get the IP address of the server

        byte[] macAddr = new byte[6];
        uint macAddrLen = (uint)macAddr.Length;
        if (SendARP((int)dst.Address, 0, macAddr, ref macAddrLen) != 0)
            throw new InvalidOperationException("SendARP failed.");

        string[] str = new string[(int)macAddrLen];
        for (int i = 0; i < macAddrLen; i++)
            str[i] = macAddr[i].ToString("x2");
        return string.Join(":", str);
        //Console.WriteLine(string.Join(":", str));
    }
...