Я работаю над приложением Java, которое работает как на Windows, так и на Mac. Он взаимодействует с различными серверами, но должен вести себя по-разному, в зависимости от того, использует ли он WiFi или проводное соединение.

Есть ли какой-то способ выяснить, что он использует?

Я смотрел на использование NetworkInterface.getNetworkInterfaces() но это не говорит мне, какой NetworkInterface используется и является ли это WiFi или нет.

2 ответа2

0

Единственный способ сделать это с помощью нативных API.

Они могут быть связаны с Java с помощью JNA. На Mac вам нужно использовать что-то вроде https://github.com/shannah/Java-Objective-C-Bridge поверх JNA, чтобы использовать среду Objective-C.

0

С java.lang.ProcessBuilder вы можете запустить ipconfig /all под Windows и /sbin/ifconfig -a под Linux (и Mac?) ответить на вопрос «Как я подключен к сети?».

Чтобы быть более полным и точным, вы можете принудить свой протокол добавить автоадаптивное поведение: качество, полоса пропускания, количество потерянных пакетов и т.д. Позволяют вам решать, как управлять вашим протоколом.

Вы можете использовать TCP/IP для управления логикой обмена (поведение, контроль) и использовать UDP для данных. Первый уровень: UDP предполагает обнаружение и данные, второй уровень построен на TCP и предлагает управление сессиями.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .