X>собственно, нужно узнать MAC адрес того девайса, с помощью которого машина в данный момент выходит в интернеты. девайсов же может быть несколько. X>подскажите, куда гуглить? GetBestRoute(интернеты)
Как много веселых ребят, и все делают велосипед...
Здравствуйте, niXman, Вы писали: X>собственно, нужно узнать MAC адрес того девайса, с помощью которого машина в данный момент выходит в интернеты. девайсов же может быть несколько.
Простого способа вроде нет, только врукопашную.
1. Получаем локальный активный адрес с помощью пары gethostname() gethostbyname()
2. Получаем список всех ip адресов в системе с помощью GetIpAddrTable()
3. Получаем список всех адаптеров с помощью GetAdaptersInfo
В списке полученном из п. 2 находим запись с таким же ip который получили в п. 1, запоминаем его индекс
В списке полученном в п. 3 находим адаптер с нужным индексом.
Читаем его MAC
Насобирал на скорую руку рабочий код из примеров в МСДН
У меня работает, в компе встроенная сетевуха и usb wi-fi адаптер, IP и MAC показывает корректно.
В коде мрак и ужас, но это такие примеры в МСДН, да и местами я обработку ошибок выкинул. Надо конечно привести в порядок.
Здравствуйте, niXman, Вы писали:
X>привет!
X>собственно, нужно узнать MAC адрес того девайса, с помощью которого машина в данный момент выходит в интернеты. девайсов же может быть несколько.
X>подскажите, куда гуглить?
X>вот только я не понял, как получить MAC адрес используемого девайса? X>смотрю на структуру MIB_IPFORWARDROW, и не вижу нужного мембера...
мембер зовется dwForwardIfIndex, GetIfTable выдает соответствие dwIndex — bPhysAddr.
Кстати, что значит "используемый девайс"?
Вот если у меня дома комп, в локальной домашней сети и в него откнут 3G свисток через который интернеты — какой из этих девайсов используемый?
Или вот у меня интернет через VPN через локалку, но сайт провайдера открывается напрямую, а все остальные интернеты — через VPN (который сам по себе является виртуальным интерфейсом)
Можно усложнить схему до нескольких интерфейсов каждый из которых смотрит в интернеты, но командой route юзер зароутил некоторые сайты через одну сетевуху, а некоторые — через другую. И какой из них используемый?
Как много веселых ребят, и все делают велосипед...