通过usb访问dev机器localhost

时间:2010-03-26 15:32:23

标签: java android networking usb

我的活动需要与位于我的开发机器上的java服务器通信。实际上,使用模拟器,我可以通过特殊的10.0.2.2地址访问服务器套接字。现在我想在通过usb连接的手机上测试我的应用程序,但似乎我不能再使用10.0.2.2来访问我的开发机器localhost了。 自然地使用wifi路由器和正确的局域网寻址可以解决问题,但我需要使用USB连接。任何提示?

编辑:
只是添加了不同的场景,让每个人都更好地理解:

1。基于模拟器的场景:

  • 在我的电脑上运行的标准java服务器@localhost:15000
  • 在我的模拟器上运行的android java客户端。

当Android应用程序需要联系服务器时,它使用10.0.2.2:15000,如指定的here。 一切正常。

2。物理连接设备的正确wifi方案:

  • 在我的电脑上运行的标准java服务器@ 192.168.1.10:15000。
  • 在我的设备上运行的android java客户端,分配了192.168.1.11地址。

当Android应用程序需要联系服务器时,它使用192.168.1.10:15000并且一切正常。

第3。期望的场景:

  • 在我的电脑上运行的标准java服务器@localhost:15000。
  • 在我的设备上运行的android java客户端通过usb电缆连接。没有网络处于活动状态。

当Android应用程序需要联系服务器时,它会尝试连接到10.0.2.2:15000,但会抛出异常(网络无法访问)。看起来特殊地址10.0.2.2仅适用于仿真器实例。

我只是想知道在adb / adt套件中是否有办法从通过usb线连接的设备访问pc地址。 我希望现在更清楚一点。 感谢。

2 个答案:

答案 0 :(得分:3)

似乎没有办法让场景#3正常工作,因为USB连接不是真正的网络连接,并且手机没有与之关联的IP。

实际上我的解决方案是在手机和电脑之间使用ad-hoc wifi连接。此方案类似于#2,但没有路由器或dhcp。不幸的是,由于this issue,我的Hero无法原生处理ad-hoc连接。所以我必须root我的设备并手动更改一些配置脚本。我希望下一版本中可以使用这样的功能。

答案 1 :(得分:0)

您可以从开发者设备通过USB设置手机连接,但必须adb forward。但是,我不认为你可以通过usb路由其他方式:设置从手机到电脑的连接。

您可以让您的电脑连接到手机并检查它有哪些IP。

在考虑这个问题时,我意识到,使用adb forward您必须使用localhost作为您的主机,所以也许您也可以在手机上执行此操作:adb forward您想要的端口要在手机上使用,请连接到localhost上的该端口。