【发布时间】:2016-09-14 13:32:16
【问题描述】:
我有一个简单的应用程序,我打开一个到服务器的 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 连接到手机)。此网络没有 Internet 连接。在其他 Android 设备上,您将收到“Wifi 无法访问 Internet - 此网络无法访问 Internet。保持连接?(是/否)”的通知,但您仍然可以在 LAN 内进行通信。在 Nexus 上,除非用户接受他们想要保持与网络的连接,否则所有通信都会被阻止。
【问题讨论】:
-
我有同样的错误,经过一段时间的挖掘,我意识到我的手机最近使用 AFWall+ 应用程序应用了防火墙,lol
标签: android sockets tcp nexus-5