Java Verifique rapidamente a conexão de rede
Meu problema é bastante direto. Meu programa requer notificação imediata se uma conexão de rede for perdida. Estou usando o Java 5, por isso não consigo usar os recursos muito úteis de NetworkInterface.
tualmente, tenho dois métodos diferentes de verificação de conexão de red
(tentativas .. capturas removidas)
Method One:
URL url = new URL("http://www.google.com");
HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection();
// trying to retrieve data from the source. If offline, this line will fail:
Object objData = urlConnect.getContent();
return true;
Method 2:
Socket socket = new Socket("www.google.com", 80);
netAccess = socket.isConnected();
socket.close();
return netAccess;
No entanto, esses dois métodos bloqueiam até que um tempo limite seja atingido antes de retornar falso. Preciso de um método que retorne imediatamente, mas seja compatível com o Java 5.
Obrigado
EDIT: esqueci de mencionar que meu programa depende de endereços IP, não de nomes DNS. Portanto, verifique se há um erro ao resolver um host ...
2ª EDIÇÃO:
Figurou uma solução final usando NetworkInterface:
Enumeration<NetworkInterface> eni = NetworkInterface.getNetworkInterfaces();
while(eni.hasMoreElements()) {
Enumeration<InetAddress> eia = eni.nextElement().getInetAddresses();
while(eia.hasMoreElements()) {
InetAddress ia = eia.nextElement();
if (!ia.isAnyLocalAddress() && !ia.isLoopbackAddress() && !ia.isSiteLocalAddress()) {
if (!ia.getHostName().equals(ia.getHostAddress()))
return true;
}
}
}