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

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

我错过了什么?


当前回答

以管理员身份运行CMD

在CMD屏幕上输入ipconfig,屏幕将显示文本

就像这张照片

您可以使用这个IP访问您的本地主机 您必须连接到与您的PC连接的相同网络

其他回答

我找到了一个快速解决这个问题的方法。试试这个链接。它应该能帮你解决问题。

我只改变了一件事,在教程中,你把“127.0.0.1”改为“所有”,把它改为你的服务器正在运行的IP地址。

在此之后,您应该能够连接到本地主机。


以下是链接页面信息的(校对)副本:

步骤1

安装Wamp服务器(或其他您喜欢的服务器)。

这是我所知道的设置本地服务器最好的服务器之一。如果您已经安装了Apache或其他服务器,请忽略此步骤。

从这里下载并安装Wamp服务器。

步骤2

在Windows防火墙中为80端口添加一条新规则。

打开控制面板,选择“Windows防火墙”。 在“Windows防火墙”设置页面的左侧面板中选择“高级设置”。 从左侧面板中选择Inbound Rules,然后选择New Rule。 选择“Port”,单击“Next”。 选择“Specific local ports”单选按钮,输入80作为端口值。 保持保持连接不变,执行下一步。 保持Profile选项不变并单击Next。 给新规则起个好听的名字,然后单击Finish。

这将启用本地网络IP上的80端口访问。

步骤3

编辑Wamp服务器的httpd.conf文件以修复403错误。

我们需要编辑这个文件。否则,当我们通过本地网络IP访问本地主机时,将得到403禁止错误。

Click on the Wamp server tray icon. Open Apache server sub menu. Select httpd.conf. Find this section of configuration in the httpd.conf file: Directory “c:/wamp/www/” # # Possible values for the Options directive are “None”, “All”, # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that “MultiViews” must be named *explicitly* — “Options All” # doesn’t give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be “All”, “None”, or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride all # # Controls who can get stuff from this server. # # onlineoffline tag – don’t remove Order Deny,Allow Deny from all Allow from 127.0.0.1

找到并将' 127.0.0.1 '替换为' All ',保存文件,并重新启动Wamp服务器。

步骤4

找到您的本地网络IP。

打开命令提示符。 键入并输入ipconfig命令。 在我的例子中,我的局域网地址是10.0.0.2。

这是你需要通过wifi访问你的Android手机上的本地主机的IP。要测试它是否正常工作,请在安装本地主机服务器的桌面浏览器中键入此IP地址。浏览器应该成功地显示您的本地主机页面。这将确保这个本地网络IP现在可以在您的Android手机上成功访问。

我希望本教程将帮助您通过wifi访问您的本地主机。

使用netconfig xml并在manifest.xml中分配它是最好的解决方法。这将绕过android默认的https限制。

“Chrome for Android的端口转发让你更容易在手机上测试你的开发站点。它的工作原理是在移动设备上创建一个监听TCP端口,该端口映射到开发机器上的特定TCP端口。这些端口之间的流量通过USB传输,因此连接不依赖于你的网络配置。”

更多详情请访问:https://developer.chrome.com/devtools/docs/remote-debugging#port-forwarding

使用简单的解决方案(只需从移动设备访问laptop_ip_addr:port,当移动设备和笔记本电脑在同一个WiFi上时),我得到一个ERR_CONNECTION_REFUSED错误。也就是说,我的MacBook似乎拒绝了我手机的连接尝试。


ADB反向套接字(仅限Android)

这个解决方案适用于我(用MacBook进行测试):

用USB线连接Android移动设备到笔记本电脑 在移动设备上打开USB调试 在笔记本电脑上执行adb reverse tcp:4000 tcp:4000 使用您的自定义端口号,而不是4000 现在,在移动设备上,你可以导航到http://localhost:4000/,它实际上会连接到笔记本电脑,而不是移动设备

请看这里的说明。

缺点是这只能在一个移动设备上使用。如果你想用另一个移动设备访问,你必须先断开第一个设备(关闭USB调试),连接新的设备(打开USB调试),然后再次运行adb reverse tcp:4000 tcp:4000。

编辑:据报道此解决方案也适用于Windows。


Ngrok(适用于所有设备)

另一个应该总是有效的解决方案是ngrok(在其他答案中提到过)。它通过Internet工作,而不是本地网络。

它非常容易使用:

brew install ngrok
ngrok http 4000

在其他一些信息中,输出如下一行

Forwarding                    http://4cc5ac02.ngrok.io -> localhost:4000

现在,您可以在任何连接到Internet的设备上导航到http://4cc5ac02.ngrok.io,这个URL重定向到您笔记本电脑的localhost:4000。

请注意,只要ngrok命令正在运行(直到您按下Ctrl-C),您的项目就是公共服务的。所有拥有URL的人都可以看到它。

基于笔记本电脑的移动设备连接wamp服务器的解决方案:

首先,wifi不是路由器。因此,为了将我的移动设备连接到我笔记本电脑上基于localhost的wamp服务器,我需要一个路由器。 我下载并安装了一个免费的虚拟路由器:https://virtualrouter.codeplex.com/

配置它真的很简单:

右键单击系统托盘中的虚拟路由器图标 2 .单击“配置虚拟路由器” 填写密码 如果您的internet连接是以太网,请选择共享连接:以太网 然后在你的笔记本电脑和设备上打开wifi 在您的设备上连接到虚拟路由器网络名

然后你可以通过你的设备连接到你的笔记本电脑,启动浏览器并填写你的笔记本电脑的IPV4地址 (要在windows上找到它,键入CMD: ipconfig,并找到ipv4地址)

您应该看到wamp服务器主页。