ErrnoException: isconnected failed: EHOSTUNREACH (No route to host) lors de la modification du réseau wifi en utilisant ICS

lors de l'utilisation de mon application sur ics, après que je change mon réseau wifi de networkA à networkB toutes les demandes d'images commencent à revenir avec une exception.

a échoué à l'exception

> org.apache.http.conn.HttpHostConnectException: Connection to
> https://m1.testapp.com refused    at
> org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
>   at
> org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
>   at
> org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
>   at
> org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
>   at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
>   at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
>   at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
>   at
> com.testApp.android.ws.PooledRequestProcessor$Runner.run(PooledRequestProcessor.java:298)
>   at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
>   at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
>   at java.lang.Thread.run(Thread.java:856)  Caused by:
> java.net.ConnectException: failed to connect to /109.233.153.38 (port
> 443) after 20000ms: isConnected failed: EHOSTUNREACH (No route to
> host)     at
> org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:181)
>   ... 10 more  Caused by: java.net.SocketException: failed to connect
> to /109.233.153.38 (port 443) after 20000ms: isConnected failed:
> EHOSTUNREACH (No route to host)   at
> libcore.io.IoBridge.isConnected(IoBridge.java:220)    at
> libcore.io.IoBridge.connectErrno(IoBridge.java:152)   at
> libcore.io.IoBridge.connect(IoBridge.java:112)    at
> java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)    at
> java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)    at
> java.net.Socket.connect(Socket.java:842)      at
> org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
>   at
> org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
>   ... 10 more  Caused by: libcore.io.ErrnoException: isConnected
> failed: EHOSTUNREACH (No route to host)   at
> libcore.io.IoBridge.isConnected(IoBridge.java:201)

la chose la plus étrange est que même désinstaller l'application et la réinstaller ne le réparera pas, juste éteindre le téléphone et l'allumer.

j'ai vu un problème similaire ici http://groups.google.com/group/newsrob/browse_thread/thread/ea2f26d9d1753b79/5800e268eeab399c#5800e268eeab399c . Le problème ne se produit pas sur les téléphones avec 4.0.3, juste sur ceux avec 4.0.1, et la mise à jour ne semble pas être disponible en Europe encore.

22
demandé sur David 2012-01-09 14:53:19

5 réponses

peut-être que cela prend un certain temps pour que le changement ait lieu pour une raison quelconque? Vous pouvez vérifier s'il y a une connexion réseau active avant de faire la demande:

ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo                 = connectivityManager.getActiveNetworkInfo();

if (networkInfo != null && networkInfo.isConnected() && networkInfo.isAvailable())
{
    // DO WHAT YOU NEED TO DO ON THE NETWORK
}
else
{
    // PROMPT USER THAT NETWORK IS DISCONNECTED

        Toast.makeText(this, "There is no active network connection!", 5000).show();
}
2
répondu Jabari 2015-10-12 19:54:55

lors de la commutation et l'établissement avec le nouveau périphérique réseau peut prendre un certain temps. Le code ci-dessous peut vous aider.

ConnectivityManager connMngr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
try {
    return connMngr.getActiveNetworkInfo().isConnectedOrConnecting();
}
catch (NullPointerException npe) {
    return false;
}
0
répondu ManishL 2013-03-13 06:15:26

on dirait que vous avez un problème avec le protocole TCP. Il peut être en cas de faible WiFi ou signal 3G. Utilisez try / catch pour cela.

0
répondu RagnarR 2014-07-15 10:27:54

echoue: EHOSTUNREACH (No route to host)

Donc le routage n'a pas été configuré correctement.

j'ai trouvé que pour certains appareils vous devez mettre le WifiConfigurationipAssignment champ WifiConfiguration.IpAssignment.DHCP manuellement pour cela une requête DHCP est exécutée après avoir changé le wifi de manière programmatique. Cela ne peut se faire que par la réflexion,voir cette réponse comment le coder. Attraper toutes les exceptions, parce que sur d'autres appareils le champ n'existe même pas.

0
répondu Paramaeleon 2017-05-23 12:25:51

j'ai eu le même problème c'est comment je l'ai résolu.

  1. désactivez vos pare-feu
  2. allez dans votre dossier serveur (dans mon cas, J'utilisais le noeud.js) le fichier WWW et écouter sur le port fourni, sur toutes les interfaces réseau.

    le serveur.écouter(port, '10.8.75.204');

    server.on('error', onError);
    server.on('listening', onListening);
    
  3. assurez-vous que l'adresse IP est votre adresse IP réseau locale, sur les veuves cela peut être obtenu en tapant ipconfig sur l'invite de commande.

  4. redémarrez le serveur et essayez de vous connecter à nouveau.

0
répondu chinedu 2018-08-21 03:40:57