【问题标题】:Android "localhost" sockets fail when no data connection?没有数据连接时,Android“localhost”套接字失败?
【发布时间】:2011-07-13 13:39:19
【问题描述】:

我正在设计一个需要在本地设备上使用网络服务器的 Android 应用。为此,我一直在尝试一些不同的服务器。目前我还没有编写任何代码或在模拟器中运行任何东西,只是在我的实际手机上玩弄服务器,我正在观察一些奇怪的行为。

每当我尝试连接到本地 Web 服务器时,如果我关闭了 WIFI,HTTP 请求就会失败。如果我打开WIFI,它会成功。 根据我使用的地址,我得到不同的结果:使用 localhost 或 127.0.0.1,当 WIFI 关闭时,我得到连接被拒绝;使用当前的 10.X.Y.Z 地址我得到一个超时。两个地址都在 WIFI 开启时工作。

我已经用 xWS、PAW 和 i-Jetty 尝试过这个:行为是一致的。 WIFI开启,我可以连接到本地网络服务器; WIFI关了,我不能。 我在三星 Galaxy S (GT-I9000) 上使用 Android 2.3.3 上的默认“互联网”浏览器。

有人知道这是为什么吗?这是我需要更改某个设置的简单问题,还是发生了什么?

干杯,

/乌菲

【问题讨论】:

    标签: android sockets


    【解决方案1】:

    你能改变网络服务器连接的网络接口吗? 默认设置可能类似于eth0wlan0,如果您将其更改为lo,它可以工作。

    【讨论】:

    • 在这些服务器中,i-Jetty 提供了最多的可配置性。我无法更改界面,但启动 i-Jetty 后会报告两个服务器 URL,一个在 10.X.Y.Z 地址上,一个在 127.0.0.1 上。但是在没有WIFI的情况下还是会拒绝连接。
    • 即使没有 Wi-Fi,您也获得了 10.X.Y.Z URL?
    • 是的。并且它不应该工作是有道理的(一个陈旧的 IP 地址由一个关闭的接口持有),但是环回接口肯定没有这样的借口吗?
    • 这很奇怪。我在我的设备上以飞行模式尝试了ping 127.0.0.1ping localhost,两者都有效。 ifconfig lo 还告诉我环回接口已启动并正在运行。恐怕我无法为您提供更多帮助,我从未尝试在我的设备上安装网络服务器,我不明白为什么它不起作用。
    • 好的,感谢您的帮助。会投票给你的答案,但我还没有 15 个代表。
    【解决方案2】:

    你问为什么当你关闭你的 wifi 时,没有连接到 10.0.0.2(你的计算机的本地主机),当你打开它时,有连接?

    非常简单。 Wifi 关闭 - 没有互联网连接。设备模拟器是您计算机操作系统中的一个独立操作系统。当您关闭 WIFI 时,没有通往主机(您的计算机)的路由 - 没有互联网

    【讨论】:

    • 不,我没有使用模拟器,并且浏览器和服务器都在 Android 设备上运行。我在问为什么同一 Android 设备上的两个进程之间的套接字连接失败时没有WIFI。应该还有到 127.0.0.1 的路由。
    【解决方案3】:

    我现在已经用我自己的简单客户端和 Opera 进行了测试 - 它可以工作。

    所以事实上,这不是 IP 堆栈的问题,而是默认 Android 浏览器的问题,或者可能是制造商(三星)或运营商(瑞典电信)强制执行的设置。无论哪种方式,都有一种解决方法:改用 Opera。

    仍然不知道为什么它不适用于默认浏览器,但我会将这个问题标记为已回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多