Там может быть более простой способ, но если вы просто ищете интерфейс, который подключается к Интернету, есть простой прием, который вы можете использовать, который не включает чтение таблиц маршрутизации - просто создайте сокет, подключите егона адрес, который существует в Интернете, затем получите локальный адрес этого сокета. Лучше использовать UDP-сокет, поскольку его connect
не выполняет никакого реального ввода-вывода:
DatagramSocket s = new DatagramSocket();
s.connect(InetAddress.getByName("1.1.1.1"), 53);
System.out.println(s.getLocalAddress());
Операционная система свяжет сокет с соответствующим интерфейсом для исходящего соединения с помощью таблицы маршрутизации. Если у вас есть IP-адрес, вы можете найти интерфейс с этим IP-адресом.