【问题标题】:What is localhost for Android?什么是 Android 的本地主机?
【发布时间】:2014-10-08 18:31:22
【问题描述】:

Android 设备的“localhost”地址是什么?

我正在同一个应用程序中使用客户端和服务器测试一个程序。

SERVER_IP ="http://localhost""http://127.0.0.1" 都不适用于

InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
socket = new Socket(serverAddr, SERVERPORT);

它给出:

无法解析主机"http://localhost":没有关联地址 使用主机名 android

使用 localhost 的最佳方式是什么?

更新 感谢所有 cmets:"http://localhost" 不正确。正确的是"localhost""127.0.0.1""127.0.0.2"等。但我希望最好的解决方案是标记答案。

【问题讨论】:

  • 尝试 127.0.2.2。告诉我,您是否在模拟器上测试客户端?
  • @AllIsWell 没有。 127.0.0.2 不能在真机上运行。
  • @AdamS 谢谢。我看到了这个答案。但这不是我想要的。
  • SERVER_IP ="http://localhost" nor "http://127.0.0.1"。不要指定协议,当然也不要指定 http。试试SERVER_IP ="localhost" or "127.0.0.1"。事实上,这是在同一个应用程序中还是在同一个设备上?

标签: java android


【解决方案1】:

Sockets 通过 TCP 进行通信,这是比 HTTP 更低级别的协议。当您为套接字通信识别server address 时,请使用服务器的裸名(例如“localhost”)或点分四边形(例如“192.168.0.100”)。

不要包含 http:// 或任何其他方案

如果我正确理解了这个问题并且目标是在同一台机器(手机)之间打开一个套接字,那么您可以使用

InetAddress serverAddr = InetAddress.getByName(null);

获取“loopback”接口,相当于使用localhost。

【讨论】:

  • 这就是我想要的!非常感谢。已接受连接。 s.getRemoteSocketAddress().toString() 给了我 ip_port: /::1:44967
【解决方案2】:

根据this的回答,您可以简单地使用您的本地IP充当localhost。您可以在 Windows 上使用 ipconfig 或在 linux 上使用 ifconfig 找到它。

显然你也可以替换 10.0.2.2

【讨论】:

  • @RyPole 10.0.2.2 不起作用。最好的办法是使用当前 IP。
  • 是的,请记住,这不是您的公共 IP,而是您的网关。
  • 即使我尝试不是“http://10.0.2.2”而是“10.0.2.2”,这个IP也不起作用
猜你喜欢
  • 2014-06-21
  • 1970-01-01
  • 2014-08-19
  • 2010-12-29
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多