首页 文章

通过usb访问dev机器localhost

提问于
浏览
12

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

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

1. Emulator-based scenario:

  • 在我的电脑上运行的标准java服务器@localhost:15000

  • 在我的模拟器上运行的android java客户端 .

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

2. Proper wifi scenario with physical connected device:

  • 在我的电脑上运行的标准java服务器@ 192.168.1.10:15000 .

  • 在我的设备上运行的android java客户端,分配了192.168.1.11地址 .

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

3. Desired scenario:

  • 在我的电脑上运行的标准java服务器@localhost:15000 .

  • 在我的设备上运行的android java客户端通过usb电缆连接 . 没有网络活动 .

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

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

2 回答

  • 0

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

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

  • 3

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

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

    在考虑它时,我意识到,使用 adb forward 你必须使用 localhost 作为你的主机,所以也许你也可以在手机上执行此操作: adb forward 你要使用的端口和手机上的端口,连接到localhost上的那个端口 .

相关问题