【问题标题】:Android client socket closed randomly ONLY if using 3G connection, NOT wifi connectionAndroid 客户端套接字仅在使用 3G 连接而不是 wifi 连接时随机关闭
【发布时间】:2011-09-30 22:42:53
【问题描述】:

我有一个在专用服务器上在线运行的 Java 网络服务器,还有一个用 Android SDK 和 java 编写的 Android 网络客户端。

如果android设备连接WIFI可以正常工作,但是如果我使用3G连接设备,当我从客户端调用:readInt()时,套接字会关闭。它不是在第一次通话时发生,而是在以后发生。它看起来很随机,很难解释,但是当没有数据被读取太多(或没有)时,它可能会发生。例外是SocketException connection reset by peer

我想更具体地解释一下,但调试起来非常困难,而且在我看来,它看起来像一个 Android 错误(不确定)。这就是我问这个问题的原因。因为肯定有人遇到过同样的问题。

Android 设备的 WIFI 连接和 3G 连接有什么区别,会产生这种断开连接?有什么办法可以解决这个问题?

如果有人可以提供帮助,谢谢。

编辑:我的 3G 连接没有中断。正在鸣叫的是插座,而且只有插座。只有当我连接到 3G 时才会发生这种情况。不在WIFI中。

【问题讨论】:

  • 不知道你们的服务怎么样,但是我的3G一直掉线。当您重新连接到 3G 热点时,您的 DHCP 租约不是更新了吗?会造成新的IP,所以数据包不同。不会重新连接到同一个套接字。
  • 是的,您也可以从一个塔切换到另一个塔,这可能会降低您的 cxn(未验证)。

标签: android sockets 3g


【解决方案1】:

您的连接可能会中断,在这种情况下,您之前创建的套接字已损坏/关闭。 我建议您监听网络更改意图“android.net.conn.CONNECTIVITY_CHANGE”并在每次网络发生更改时重置您的套接字。这应该可以解决您的问题

【讨论】:

    【解决方案2】:

    我找到了答案:几家 3G 网络提供商关闭了客户的插座以获取更多利润。唯一的解决方案是人为地减慢流量。

    【讨论】:

      猜你喜欢
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      相关资源
      最近更新 更多