Я пытаюсь выяснить, какой сетевой интерфейс в настоящее время используется на локальной машине.Я могу использовать NetworkInterface.getNetworkInterfaces()
, чтобы получить все интерфейсы, установленные на моем компьютере, но я не могу определить, какой интерфейс использует компьютер для доступа в Интернет.
Я пытался отфильтровать неактивныеи интерфейсы обратной связи, затем распечатайте остальные:
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface face = interfaces.nextElement();
if (face.isLoopback() || !face.isUp()) {
continue;
}
System.out.println(face.getDisplayName());
}
Результаты приведены ниже:
Qualcomm Atheros AR9485 802.11b/g/n WiFi Adapter
Microsoft ISATAP Adapter #5
Как видите, в списке есть два интерфейса.Мой компьютер в настоящее время использует для подключения к Интернету адаптер Qualcomm Atheros.Я мог бы просто проверить имя интерфейса, чтобы увидеть, был ли это адаптер Qualcomm, но это работало бы только до тех пор, пока я не использовал другой адаптер Qualcomm для установления соединения Ethernet.
Я видел аналогичный вопрос на Superuser, который определил маршрут на основе метрики.
Есть ли чистый способ сделать это в Java?