2016-09-14 52 views
1

我有一個簡單的應用程序,我打開一個到服務器的TCP套接字連接,然後通過它發送一些數據。它工作正常,但在Nexus 5X設備上出現以下異常。由於我能夠用其他設備連接到服務器,所以在服務器端不是問題。在Nexus 5X上拒絕TCP連接

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:

它看起來像Nexus 5X保護塊訪問服務器(這是網絡的一部分,並通過wifi連接到電話)。這個網絡沒有互聯網連接。在其他的Android設備上,你會收到一條通知:「Wifi沒有互聯網接入 - 這個網絡沒有互聯網接入。保持連接?(是/否)」,但你仍然可以在局域網內進行通信。在Nexus上,除非用戶已經接受他們希望保持連接到網絡的所有通信被阻止。

+0

我有同樣的錯誤,並挖了一段時間後,我意識到,我的手機上應用防火牆與AFWall +應用最近,洛爾 –

回答

1

現在沒有針對此問題的編程解決方案。用戶必須手動允許網絡。由於這是用於檢測強制門戶的安全功能,因此係統應用程序可以禁用此功能。

This文章描述一些細節

0

連接通過本地功能connect()實現。 man connect說:

ECONNREFUSED沒有人聽的遠程地址。

這意味着你應該檢查你的服務器是否真的在指定的地址和端口可用,並且能夠接受新的連接。