Autor
|
Tema: Comprobar conexion en Java (ping) (Leído 12,400 veces)
|
juancaa
Desconectado
Mensajes: 140
[ Img^(Img) = Real ]
|
Buenas! Estoy desarrollando una pequeña aplicacion que entre otras cosas comprueba el estado de la conexion, lo mas sencillo que se me ocurre es realizar un ping a " www.google.com" pero por lo visto java no realiza pings, por lo que recurri al metodo "isReachable()" pero este, por lo que parece tansolo es capaz de encontrar el host dentro de una red local, no en la red externa. Este es el codigo que actualmente estoy utilizando: try { int timeOut = 2000; String host = "http://www.google.es/"; if (address.isReachable(timeOut)) conStatus = "Online"; else conStatus = "Still Offline"; return conStatus;
Y tal como he dicho, no funciona para redes externas con lo que no se como hallar el estado de la conexion. Alguna idea?? Gracias de antemano!!
|
|
|
En línea
|
Que tengas un buen dia!
|
|
|
adastra
Endless Learner
Ex-Staff
Desconectado
Mensajes: 885
http://thehackerway.com/
|
Cuando realizas conexiones HTTP/HTTPS desde Java, debes utilizas las clases HttpUrlConnection y HttpsUrlConnection, ambas son hijas de la clase URLConnection. En esas clases, esta la clave para lo que quieres hacer.
|
|
|
En línea
|
|
|
|
juancaa
Desconectado
Mensajes: 140
[ Img^(Img) = Real ]
|
Esta es la solución a la que he llegado : private String getConnectionStatus () { String conStatus = null; try { URL u = new URL("https://www.google.es/"); HttpsURLConnection huc = (HttpsURLConnection) u.openConnection(); huc.connect(); conStatus = "Online"; } catch (Exception e) { conStatus = "Offline"; } return conStatus; } Este codigo lo que hace es intentar conectar a la direccion "u" y, si es posible actualiza el valor de conStatus a "Online" y si no es posible tira una excepcion, la cual recojo y actualizo el valor de conStatus a "Offline"... Es esta la idea ? Es optimizable el codigo ??
|
|
|
En línea
|
Que tengas un buen dia!
|
|
|
adastra
Endless Learner
Ex-Staff
Desconectado
Mensajes: 885
http://thehackerway.com/
|
jejeje, si y no.Fijate en la excepción que se lanza cuando intentes realizar una conexión por HTTPS...Debes implementar los métodos necesarios para tratar los los certificados que emite el servidor y definir cuales son confiables y cuales no. Si ese tratamiento no es implementado, tu programa en Java siempre te dará una excepción porque no confía en ninguno de los certificados que envía el servidor para establecer una conexión SSL.Por otro lado, el hecho de que haya conectividad por significa que el servicio este disponible, la respuesta perfectamente puede ser un error HTTP 3XX, 4XX o 5XX, podrás garantizar que el servidor esta activo (y que tienes acceso al recurso o página que solicites) si y solo si, el código HTTP retornado por el servidor es 2XX Esto es un fragmento de código de un proyecto que tengo en Java que establece una conexión HTTP/HTTPS, es más o menos lo que necesitas (en este caso sin validar los certificados aceptables, por defecto todos son admitidos, desde el punto de vista de la seguridad esto se puede dar para ataques MITM, así que no es código para poner en un entorno productivo).
[pre]if(isUseSSL()) { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, new TrustManager[]{ new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) { } public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) { } } }, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier( new HostnameVerifier() { public boolean verify(String string,SSLSession ssls) { return true; } }); setUrlService(new URL("https",getHostService(),getPortService(),pathService)); } else { setUrlService(new URL("http",getHostService(),getPortService(),pathService)); } if(getUrlService() != null) { setUrlConnection(getUrlService().openConnection()); } if(getUrlConnection() != null) { getUrlConnection().setDoOutput(true); getUrlConnection().setDoInput(true); getUrlConnection().setUseCaches(false); getUrlConnection().setRequestProperty("Content-Type", contentType); getUrlConnection().setReadTimeout(5000); return true; [/pre][pre] } [/pre][pre] [/pre][pre] [/pre][pre] [/pre][pre] [/pre][pre] [/pre][pre] [/pre][pre][pre] /** * Getter of this property. * @return the urlConnection */ public URLConnection getUrlConnection() { return urlConnection; } /** * Setter of this property * @param urlConnection the urlConnection to set */ public void setUrlConnection(URLConnection urlConnection) { this.urlConnection = urlConnection; }[/pre][/pre]
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Comprobar si hay ping
Scripting
|
arca
|
9
|
7,006
|
28 Octubre 2008, 22:18 pm
por Enemy
|
|
|
Ver ID del proceso (conexion) y comprobar su estado
Bases de Datos
|
XafiloX
|
3
|
6,887
|
27 Febrero 2010, 16:47 pm
por XafiloX
|
|
|
Comprobar la hora en java
Java
|
Zoik
|
5
|
4,096
|
28 Agosto 2013, 21:58 pm
por 1mpuls0
|
|
|
Comprobar conexión a internet en C++?
Programación C/C++
|
andrecid
|
1
|
2,617
|
17 Octubre 2015, 20:59 pm
por ThunderCls
|
|
|
Comprobar Conexión, ¿Activa?
Redes
|
dafama
|
5
|
4,536
|
24 Julio 2019, 09:55 am
por dafama
|
|