我可以使用Android模拟器访问我的笔记本电脑web服务器,我使用10.0.2.2:portno 工作得很好。
但当我连接真正的Android手机时,手机浏览器无法连接到我笔记本电脑上的同一个web服务器。手机和笔记本电脑通过USB线连接。如果我运行 adb devices命令,我可以看到我的手机。
我错过了什么?
我可以使用Android模拟器访问我的笔记本电脑web服务器,我使用10.0.2.2:portno 工作得很好。
但当我连接真正的Android手机时,手机浏览器无法连接到我笔记本电脑上的同一个web服务器。手机和笔记本电脑通过USB线连接。如果我运行 adb devices命令,我可以看到我的手机。
我错过了什么?
当前回答
我的工作(目标:调试运行在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)。
其他回答
我使用了这个过程:
在PC上安装Fiddler 按照这些优秀的说明设置PC和Android设备 只需在Android设备上打开浏览器,输入http://ipv4.fiddler访问本地主机
注意,这个过程需要你在每次会话开始和结束时更改Android设备上的WiFi设置。我发现这比我的Android设备更轻松。
为未来的开发人员添加解决方案。
ip地址的副本地址。右键单击您的网络->网络和共享->单击您当前拥有的连接->详细信息->然后ipv4地址旁边的地址是您的IP地址,请在某处注意这一点
进入控制面板->系统和安全-> windows防火墙->高级设置->入站规则->新规则(按照步骤添加端口,例如80,它真的很简单)
将您在手机浏览器中记下的IP地址和您为其创建规则的端口号放在旁边。例如192.168.0.2:80和wala。
可能的解决方案,如果它不连接。 右键点击网络->打开网络和共享->查看您的活动连接,在您的连接类型的名称下单击它,如果它是公共的,并确保将其更改为家庭网络。
Mac OS X用户
我通过启用远程管理实现了这一点:
确保你的手机和笔记本电脑连接到同一个WiFi网络 在Mac上,进入系统首选项/共享 开启远程管理
你会看到一条类似这样的消息:
其他用户可以使用some.url.com地址管理您的计算机
在你的Android设备上,你现在应该能够访问some.url.com,它委托给Mac上的localhost。你也可以使用ifconfig来获得Mac的IP地址。
ngrok的可移植解决方案(任何带有Node.js的操作系统)
如果你不介意用临时域名公开你的项目,你可以使用ngrok。假设我有一个在localhost:9460上运行的应用程序,我可以简单地编写
npm install ngrok -g
ngrok http 9460
这将给我:
Session Status online Update update available (version 2.2.8, Ctrl-U to update) Version 2.2.3 Region United States (us) Web Interface http://127.0.0.1:4040 Forwarding http://f7c23d14.ngrok.io -> localhost:9460 Forwarding https://f7c23d14.ngrok.io -> localhost:9460 Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00
我现在可以通过https://f7c23d14.ngrok.io远程查看localhost。这是与客户分享设计工作或进展的好机会。
替代解决方案与nginx代理通过
如果你通过nginx proxy_pass运行类似这样的东西,它将需要更多的调整-这是一个hack方法,但它适用于我,我对改进它的建议是开放的:
启用远程管理(如上所述) 临时将服务器设置为监听81端口,而不是80端口 输入以下命令:
sudo nginx -s reload
访问http://youripaddress: 81
server {
listen 80;
listen 81; # <-------- add this to expose the app on a unique port
server_name ~^(local|local\.m).example.com$;
# ...
}
重新加载并访问http://youripaddress:81
以上的方法对我不起作用。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)。