我如何从我的Android设备访问我的本地主机?
我可以使用Android模拟器访问我的笔记本电脑Web服务器,我使用的是10.0.2.2:portno
。
但是当我连接真正的Android手机时,手机浏览器无法连接到笔记本电脑上的同一个网络服务器。 手机使用USB电缆连接到笔记本电脑。 如果我运行adb devices命令,我可以看到我的手机。
我错过了什么?
USB不为移动设备提供网络。
如果您的桌面和手机都连接到相同的WiFi (或任何其他本地网络),则使用由路由器(不是localhost
而不是127.0.0.1
)分配的桌面IP地址。
要找出您的桌面的IP地址:
ipconfig
(Windows)或ifconfig
(Unix) localhost
和127.0.0.1
) 如果你的手机连接到移动网络 ,那么事情会变得更加困难。
要么硬核:
<your desktop IP>:<server port number>
否则,请使用xip.io或ngrok之类的东西。
这很简单。
打开Android手机/路由器的Wifi Hotspot并将笔记本电脑连接到手机。
在localhost启动你的服务器(我正在使用wamp服务器)
现在打开命令提示符并输入ipconfig命令,您将获得以下内容
Wireless LAN adapter Wireless Network Connection:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::80bc:e378:19ab:e448%11
IPv4 Address. . . . . . . . . . . : **192.168.43.76**
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.43.1
在您的手机浏览器中复制这个192.168.43.76 。
注意:请将您的网络设置为“家庭网络”。 设置家庭网络意味着让您的电脑与同一网络上的其他设备共享资料。 如果您使用的是Windows 10,请转到WiFi>当前网络的网络属性>将此PC设为可发现。
mac osx用户
我通过启用远程管理取得了成功:
phone and laptop are connected to the same wifi network
system preferences/sharing
enable remote management
你会看到类似这样的消息
其他用户可以使用地址some.url.com
来管理您的计算机
在你的Android设备上,你现在应该可以打到some.url.com
,它代表你的Mac上的localhost
。 你也可以使用ifconfig
来获取你的macbook的ip
使用ngrok的便携式解决方案(任何带有节点或npm的操作系统)
如果您不介意将您的项目暴露给临时域,那么您可以使用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
作为远程查看本地主机的一种方式。 分享设计工作或与客户共同进步是非常好的
使用nginx代理传递替代解决方案
如果你通过nginx proxy_pass运行这样的东西,它需要稍微调整一下 - 这是一个很冒险的方法,但它适用于我,我很乐意提供改进它的建议:
81
上监听,而不是在80
端口上监听 sudo nginx -s reload
http://youripaddress:81
```
server {
listen 80;
listen 81; # <-------- add this to expose the app on unique port
server_name ~^(local|local.m).example.com$;
...
}
重新加载并访问http://youripaddress:81
上一篇: How can I access my localhost from my Android device?
下一篇: R cannot be resolved