Member 12951648 Ответов: 1

Как определить первичный сетевой адаптер?


привет,
Я хочу получить (распознать, определить) адаптер сетевой карты (основной) в моей системе с кодом C++.

Что я уже пробовал:

Я использую getNetworkParam, GetInterfaceInfo и т. д., Но ни одна из этих функций не может помочь мне определить основную сетевую карту.

1 Ответов

Рейтинг:
0

Jochen Arndt

Сначала вы должны определить, что делает сетевой адаптер основным, потому что нет фиксированного определения.

Общее определение состоит в том, что этот адаптер является основным, который используется для подключения к интернету. Тогда у него есть один (или несколько) адресов шлюза (маршрутов). Вы можете получить список ваших сетевых адаптеров и позвонить Функция GetAdaptersInfo (Windows)[^] для каждого из них проверка GatewayList.

Но обратите внимание, что для одного адаптера может быть несколько шлюзов и что несколько адаптеров могут иметь настроенные шлюзы. В последнем случае у вас будет несколько" первичных " адаптеров для такого определения.

Если ваша система является частью интернет-домена (локального или Всемирного), другое определение заключается в том, что adpater, привязанный к этому домену, является основным. Если да, то используйте Функция GetNetworkParams (Windows)[^] чтобы получить HostName Если это полное имя хоста, разрешите его, чтобы получить IP-адрес (DNS-запрос), который затем указывает" основной " адаптер для такого определения.