2016-09-14 7 views
1

ich eine einfache Anwendung, wo ich eine TCP-Socket-Verbindung zu einem Server öffnen und dann einige Daten über sie senden. Es funktioniert gut, aber ich bekomme die folgende Ausnahme auf Nexus 5X-Geräten. Da ich mit anderen Geräten eine Verbindung zum Server herstellen kann, ist dies kein serverseitiges Problem.TCP-Verbindung verweigerte auf Nexus 5X

09:00:05.118+03:00 D/com.testing.android.util.Util getCurrentGatewayIP: 192.168.1.1 
09:00:05.120+03:00 D/com.testing.android.util.TCPClient Connect() 
09:00:05.121+03:00 D/com.testing.android.util.TCPClient openSocket 
09:00:17.162+03:00 E/com.testing.android.util.TCPClient sendInfo 
09:00:17.163+03:00 E/com.testing.android.util.TCPClient java.net.ConnectException: Connection refused 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356) 
    at java.net.Socket.connect(Socket.java:586) 
    at com.testing.android.util.TCPClient.openSocket(TCPClient.java:208) 
    at com.testing.android.util.TCPClient.connect(TCPClient.java:53) 

    at android.os.AsyncTask$2.call(AsyncTask.java:304) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
    at java.lang.Thread.run(Thread.java:761) 

UPDATE:

Es sieht aus wie Nexus 5X blockiert den Zugriff auf den Server (den Teil des LAN ist und eine Verbindung mit dem Telefon über Wi-Fi). Dieses Netzwerk hat keine Internetverbindung. Auf anderen Android-Geräten erhalten Sie eine Benachrichtigung "Wifi hat keinen Internetzugang - Dieses Netzwerk hat keinen Internetzugang. Bleiben Sie in Verbindung? (Ja/Nein)", aber Sie können weiterhin im LAN kommunizieren. Wenn der Benutzer auf Nexus akzeptiert hat, dass er mit dem Netzwerk verbunden bleiben möchte, ist die gesamte Kommunikation blockiert.

+0

ich denselben Fehler haben und nach einer Weile graben erkannte ich, dass mein Handy vor kurzem Firewall mit AFWall + app anwenden, lol –

Antwort

1

Im Moment gibt es keine programmatische Lösung für dieses Problem. Der Benutzer muss das Netzwerk manuell zulassen. Da dies eine Sicherheitsfunktion für die Erkennung von Captive Portals ist, können nur System-Apps dies deaktivieren.

This Beitrag beschreibt einige weitere Details

0

Connecting über native Funktion connect() umgesetzt. man connect sagt:

ECONNREFUSED Niemand auf der Remote-Adresse zu hören.

Dies bedeutet, dass Sie überprüfen sollten, ob Ihr Server tatsächlich unter der angegebenen Adresse und dem angegebenen Port verfügbar ist und neue Verbindungen akzeptieren kann.

Verwandte Themen