我可以使用Android模拟器访问我的笔记本电脑web服务器,我使用10.0.2.2:portno 工作得很好。

但当我连接真正的Android手机时,手机浏览器无法连接到我笔记本电脑上的同一个web服务器。手机和笔记本电脑通过USB线连接。如果我运行 adb devices命令,我可以看到我的手机。

我错过了什么?


当前回答

即使您的移动设备和电脑通过usb连接,此解决方案也可用:

此时需要使用端口转发功能。 在谷歌chrome inspect窗口(chrome://inspect)可以看到连接的设备。

点击端口fowading按钮,并设置一个随机端口,例如3000到您的笔记本电脑使用的端口,例如8080。

现在从设备上使用localhost:3000来访问笔记本电脑中的localhost:8080(or_whatever_ip:portno)。 您可以在移动浏览器中查看。在移动浏览器中尝试localhost:3000。 确保勾选“端口转发设置”窗口中的“启用端口转发”复选框

其他回答

Ngrok是最好的解决方案。 如果你正在开发PHP,那么我建议安装Laravel Valet,它有MacOS和Linux版本,然后你可以使用Valet共享命令。如果你正在开发任何前端技术,需要共享一个端口,比如3000,那么直接使用ngrok


Xampp和ngrok

你也可以在Windows中使用ngrok和Xampp。您可以使用以下流程。这很简单。

在ngrok上注册一个免费账户 从下载部分下载ngrok文件并打开它

注意Apache服务器运行的端口。我的情况是80

在ngrok命令行中输入ngrok http YOUR_PORT并复制转发地址

现在你可以在任何设备上使用这个转发链接(即你的物理android设备),它将托管你的本地主机服务器。例如,

取代

http://localhost/my-files/

with

http://YOUR_FORWARDING_ADDRESS/my-files/

另一件需要检查的事情是,当同时启用2.4G和5G且设备处于不同频率时,一些路由器在桥接请求方面存在问题。尝试禁用其中一个频率,以便两个设备连接到同一个接口。

在mac上,如果你的服务器是8080,在终端上运行这个命令

echo "
rdr pass inet proto tcp from any to any port 8080 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -

Windows解决方案:

你无法浏览你的网站,主要是因为你的防火墙( 默认操作系统防火墙或防病毒防火墙)正在阻止传入 连接。

Windows防火墙下:

要允许特定端口上的传入连接,请转到:

控制面板> Windows防御防火墙>高级设置>右侧 单击“入站规则>添加新规则”。 然后: 选择“端口”单选按钮。 输入要在其上启用传入连接的特定端口/范围(服务器正在运行的端口) 选择“允许连接”单选按钮。 单击Next(除非您想更改默认值) 给规则起个名字,然后单击Finish。

注意:

如果您正在使用带有防火墙的防病毒软件,那么上述步骤将不起作用,因为防病毒软件将禁用Windows防火墙,而是运行自己的防火墙。

在这种情况下,根据防病毒程序,转到您的防病毒防火墙设置并打开端口。

使用几个不同的本地主机服务器时遇到了这个问题。通过使用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。只要确保在选项下检查可访问本地网络,它应该在你的手机上工作没有任何问题。