Android http连接 - 多个设备无法连接同一台服务器

时间:2015-02-20 07:36:14

标签: android http keep-alive httpconnection

我真的需要帮助......

我有一个简单的Android应用程序连接到我的服务器以通过HTTPS获取数据。

一切正常,直到我从另一台设备(iOS或Android)连接到同一台服务器。我开始得到超时或连接被拒绝或其他错误取决于我使用的库(有时是SSL握手)

  1. 我在同一台路由器上尝试了2个Android应用程序 - 失败

  2. 我尝试过Volley,Retrofit,普通的http库 - 失败

  3. 如果一台设备通过蜂窝网络连接,另一台设备通过wifi连接,则工作正常。但是,我已经看到即使使用连接到蜂窝网络而不是wifi的2个设备也会失败的情况。

  4. 很容易重现。一个应用程序工作正常。一旦我在另一台设备上进行操作。第一个应用程序将无法连接。

  5. 使用相同api /服务器的iOS应用程序运行正常。没有失败

  6. 我在失败时在Android应用程序上运行wireshark并收到以下内容:

  7. 70 47.073286 10.0.0.1 10.0.0.138 ICMP 120目的地不可达(端口不可达)

    似乎是端口问题。我不确定这是服务器问题还是客户端问题.. iOS应用程序运行正常。没有问题。只有Android。

    我试过了:

    System.setProperty("http.keepAlive", "false");
    

    我尝试设置http标头“connection :close”无效...

    任何想法都会受到赞赏......

4 个答案:

答案 0 :(得分:0)

这里的问题相同。当我的ios设备连接到allstar英雄或有趣运行应用程序时,Android设备无法连接。我无法找到解决办法。我的路由器是tp link dir 615。也许问题是frpm router。

答案 1 :(得分:0)

在一天结束时,这是服务器方面的问题。 IT人员给了我以下信息:" tcp内核设置上的错误标志" "重复使用连接"这就是我拥有的一切。希望它可以帮助别人

答案 2 :(得分:0)

我遇到了同样的问题。问题似乎是当应用程序尝试访问TIME_CLOSE here中的端口时,这是一个很好的解释,如何发生这种情况,将 tcp内核更改为重用连接,可能解决问题,因为服务器将尝试再次在TIME_CLOSE中重新使用这些连接。但它必须是客户端的解决方案,以避免连接卡住。在我的情况下,我试图从多个活动创建连接,我猜他们,不知何故,竞争打开和关闭连接,我解决了使用单个活动来连接到服务器的问题。

希望这对某人有用。

答案 3 :(得分:0)

确切地说同样的问题花了很多时间调查,没有任何帮助,包括“重用连接”标志,还试图禁用tcp_timestamp,tcp_tw_reuse,tcp_tw_recycle并启用应用程序的vm安全模式,如下所示:

但是一切都在静脉。

更进一步,非常奇怪的是我有两个不同的实例/服务器,我为了追踪问题而完全相同,一个服务器没有任何问题。

所以最后:

  

实例重启解决了连接问题。   (或者只是需要重新启动网络服务)

(c)我的服务器/实例管理员