Я использую следующий код, чтобы получить адрес шлюза IPv4 локального компьютераОбнаружение сетевой интерфейс, который используется
var interfaces = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
var wifi = interfaces[3];
var gatewayAddresses = wifi.GetIPProperties().GatewayAddresses;
var gateway = gatewayAddresses[0].Address.ToString();
IPv4GatewayValueLabel.Text = gateway;
который работает нормально, но я выбираю интерфейс (тот, который активен) вручную. Я хочу выбрать его программно.
Я сделал некоторые отладки. NetworkInterface.GetAllNetworkInterfaces()
возвращает список интерфейсов. В моем случае есть 7. Я искал свойство, которое отличает активный интерфейс от других, и нашел OperationalStatus
, но он не очень надежный.
Я подключен к Интернету с помощью мобильного телефона (WiFi точки доступа), и это список интерфейсов я получаю:
0:
Description "Microsoft Wi-Fi Direct Virtual Adapter"
OperationalStatus Down
1:
Description "Bluetooth Device (PAN)"
OperationalStatus Down
2:
Description "Realtek PCIe FE Family Controller"
OperationalStatus Down
3:
Description "Dell Wireless 1701 802.11b/g/n"
OperationalStatus Up
4:
Description "Software Loopback Interface 1"
OperationalStatus Up
5:
Description "Microsoft ISATAP Adapter"
OperationalStatus Down
6:
Description "Teredo Tunneling Pseudo-Interface"
OperationalStatus Down
Как вы можете видеть, есть два интерфейса со значением Up
. Кроме того, я не был уверен, что, если этот список был установлен, поэтому в этот раз я подключил с помощью USB-модема и список интерфейса немного изменилось:
0:
Description "SAMSUNG Mobile USB Remote NDIS Network Device"
OperationalStatus Up
1:
Description "Microsoft Wi-Fi Direct Virtual Adapter"
OperationalStatus Down
2:
Description "Bluetooth Device (PAN)"
OperationalStatus Down
3:
Description "Realtek PCIe FE Family Controller"
OperationalStatus Down
4:
Description "Dell Wireless 1701 802.11b/g/n"
OperationalStatus Down
5:
Description "Software Loopback Interface 1"
OperationalStatus Up
6:
Description "Teredo Tunneling Pseudo-Interface"
OperationalStatus Up
7:
Description "Microsoft ISATAP Adapter #2"
OperationalStatus Down
Следовательно, я не могу полагаться на OperationalStatus
, я думаю. Как я могу сделать эту работу?