我的活动需要与位于我的开发机器上的java服务器通信。实际上,使用模拟器,我可以通过特殊的10.0.2.2地址访问服务器套接字。现在我想在通过usb连接的手机上测试我的应用程序,但似乎我不能再使用10.0.2.2来访问我的开发机器localhost了。 自然地使用wifi路由器和正确的局域网寻址可以解决问题,但我需要使用USB连接。任何提示?
编辑:
只是添加了不同的场景,让每个人都更好地理解:
1。基于模拟器的场景:
当Android应用程序需要联系服务器时,它使用10.0.2.2:15000,如指定的here。 一切正常。
2。物理连接设备的正确wifi方案:
当Android应用程序需要联系服务器时,它使用192.168.1.10:15000并且一切正常。
第3。期望的场景:
当Android应用程序需要联系服务器时,它会尝试连接到10.0.2.2:15000,但会抛出异常(网络无法访问)。看起来特殊地址10.0.2.2仅适用于仿真器实例。
我只是想知道在adb / adt套件中是否有办法从通过usb线连接的设备访问pc地址。 我希望现在更清楚一点。 感谢。
答案 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上的该端口。