【问题标题】:TCP connection refused on Nexus 5XNexus 5X 上的 TCP 连接被拒绝
【发布时间】: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


【解决方案1】:

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

This 帖子描述了更多细节

【讨论】:

    【解决方案2】:

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

    ECONNREFUSED没有人监听远程地址。

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

    【讨论】:

      猜你喜欢
      • 2016-08-18
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 2018-03-01
      • 2017-01-13
      • 1970-01-01
      • 2018-10-01
      • 2012-10-08
      相关资源
      最近更新 更多