Android“localhost”套接字在没有数据连接时失败了吗?

时间:2011-07-13 13:39:20

标签: android sockets

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

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

我用xWS,PAW和i-Jetty试过这个:行为是一致的。 WIFI上,我可以连接到本地Web服务器; WIFI关闭,我不能。 我在Samsung Galaxy S(GT-I9000)上使用Android 2.3.3上的默认“Internet”浏览器。

有谁知道这是为什么?这是一个简单的问题,我需要改变某个地方,或者发生了什么?

干杯,

/ Uffe

3 个答案:

答案 0 :(得分:1)

您可以更改Web服务器连接的网络接口吗? 默认设置可能类似于eth0wlan0,如果您将其更改为lo则可能有效。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我现在已经使用我自己的简单客户端和Opera进行了测试 - 它确实有效。

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

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