Nexus 5X上的TCP连接被拒绝

时间:2016-09-14 13:32:16

标签: android sockets tcp nexus-5

我有一个简单的应用程序,我打开到服务器的TCP套接字连接,然后通过它发送一些数据。它运行正常,但我在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)

更新

看起来Nexus 5X阻止访问服务器(它是LAN的一部分并通过wifi连接到手机)。此网络没有互联网连接。在其他Android设备上,您将收到通知" Wifi无法访问Internet - 此网络无法访问Internet。保持联系? (是/否)"但您仍然可以在局域网内进行通信。在Nexus上,除非用户已接受他们希望保持与网络的连接,否则所有通信都将被阻止。

2 个答案:

答案 0 :(得分:1)

目前还没有针对此问题的编程解决方案。用户必须手动允许网络。由于这是用于检测强制网络门户的安全功能,因此只有系统应用可以禁用此功能。

This帖子描述了更多细节

答案 1 :(得分:0)

通过本机函数connect()实现连接。 man connect说:

  

ECONNREFUSED 没人监听远程地址。

这意味着您应该检查您的服务器是否确实在指定的地址和端口可用,并且能够接受新的连接。