A única maneira de fazer isso usando APIs nativas.
Estes podem ser conectados a partir do Java usando o JNA. No Mac, você precisará usar algo como link no topo do JNA para usar o Objective-C framework.
Estou trabalhando em um aplicativo Java que é executado no Windows e no Mac. Ele se comunica com vários servidores diferentes, mas precisa se comportar de maneira diferente, dependendo de estar usando Wi-Fi ou uma conexão com fio.
Existe alguma maneira de descobrir o que está sendo usado?
Eu olhei usando NetworkInterface.getNetworkInterfaces()
, mas isso não me diz qual NetworkInterface
está sendo usado e se é WiFi ou não.
Com java.lang.ProcessBuilder , você pode executar ipconfig /all
no Windows e /sbin/ifconfig -a
no Linux (e no Mac?) para responder à pergunta "Como estou conectado à rede?".
Para ser mais completo e preciso, você pode impor seu protocolo para adicionar um comportamento adaptativo automático: a qualidade, a largura de banda, o número de pacotes de perda e assim por diante permitem que você decida como conduzir seu protocolo.
Você pode usar o TCP / IP para orientar a lógica da troca (comportamento, controle) e usar o UDP para os dados. Primeira camada: o UDP considera descoberta e dados, a segunda camada criada no TCP para oferecer gerenciamento de sessões.