我可以使用Android模拟器访问我的笔记本电脑web服务器,我使用10.0.2.2:portno 工作得很好。
但当我连接真正的Android手机时,手机浏览器无法连接到我笔记本电脑上的同一个web服务器。手机和笔记本电脑通过USB线连接。如果我运行 adb devices命令,我可以看到我的手机。
我错过了什么?
我可以使用Android模拟器访问我的笔记本电脑web服务器,我使用10.0.2.2:portno 工作得很好。
但当我连接真正的Android手机时,手机浏览器无法连接到我笔记本电脑上的同一个web服务器。手机和笔记本电脑通过USB线连接。如果我运行 adb devices命令,我可以看到我的手机。
我错过了什么?
当前回答
我个人不坚持在使用设备时使用本地主机,没有简单的解决方案。
只需启动您连接到本地主机的活动,在那里您可以使用模拟器。无论你从设备得到什么信息都可以轻松生成,并可以作为参数发送给活动。
其他回答
USB不为移动设备提供网络。
如果你的桌面和手机都连接到同一个WiFi(或任何其他本地网络),那么使用路由器分配的桌面IP地址(不是localhost,也不是127.0.0.1)。
要找出您的桌面的IP地址:
在命令行输入ipconfig (Windows)或ifconfig (Unix) 在Linux上,一行程序ifconfig | grep "inet " | grep -v 127.0.0.1将只产生重要的东西 有很多关于如何在Windows上有类似输出的建议 会有一大堆IP 尝试所有这些(除了前面提到的localhost和127.0.0.1)
如果你的手机连接到移动网络,那么事情就会变得更加困难。
要么走硬核路线:
首先找出你的路由器外部IP地址(https://www.google.de/search?q=myip) 然后,在路由器上转发一些端口到<您的桌面IP>:<服务器端口号> 最后使用外部IP地址和转发端口
否则使用类似xip的东西。IO或ngrok。
注意:ifconfig命令已经弃用,因此在Debian Linux上默认没有,从Debian扩展开始。在Debian Linux上检查网络配置的新的推荐替代方法是ip命令。例如,使用ip命令显示网络配置,执行如下命令:
ip address
以上ip命令可以缩写为:
ip a
如果您仍然喜欢使用ifconfig作为日常系统管理程序的一部分,您可以轻松地将其作为net-tools包的一部分安装。
apt-get install net-tools
参考资料在这里
使用几个不同的本地主机服务器时遇到了这个问题。通过使用Python简单服务器,我的应用程序在几秒钟内就启动并在手机上运行了。它只需要几秒钟,所以在进入任何更复杂的解决方案之前值得一试。首先,确保安装了Python。cmd+r并输入python for Windows或在mac终端输入$ python——version。
下一个:
cd <your project root>
$ python -m SimpleHTTPServer 8000
然后在网络上找到你的主机地址,我使用mac上的系统首选项/共享来找到它。点击它到你的Android设备,应该加载你的index.html,你应该是好的。
如果不是,那么问题是其他的,你可能想看看其他建议的解决方案。好运!
*编辑*
如果你正在使用Chrome浏览器,另一个快速的解决方案是Chrome扩展的Web服务器。我发现这是一种快速和超级简单的方法来访问我的手机上的localhost。只要确保在选项下检查可访问本地网络,它应该在你的手机上工作没有任何问题。
另一件需要检查的事情是,当同时启用2.4G和5G且设备处于不同频率时,一些路由器在桥接请求方面存在问题。尝试禁用其中一个频率,以便两个设备连接到同一个接口。
以上的方法对我不起作用。Mac是这样的:
在终端:
ifconfig
然后把inet后面的数字放到手机浏览器里:
我的工作(目标:调试运行在localhost:99999上的windows服务器应用程序,从运行在android手机上的客户端应用程序)
电话和电脑连接在同一网络上,例如192.168.1。XXX(在我的情况下通过wifi连接) 在Windows防火墙中开启99999端口 以管理员身份运行cmd: netsh http add urlacl url=http://*:99999/ user=Everyone
然后,可以从手机访问服务应用程序url (my_dev_machine_ip:99999/path_to_service)。