我可以使用Android模拟器访问我的笔记本电脑网络服务器,我正在使用10.0.2.2:portno
效果很好。
但是当我连接真正的Android手机时,手机浏览器无法连接到笔记本电脑上的同一个网络服务器。手机通过USB线连接到笔记本电脑。如果我跑了 adb devices命令,我可以看到我的手机。
我错过了什么?
答案 0 :(得分:307)
USB不向移动设备提供网络。
如果桌面和手机都连接到同一个WiFi (或任何其他本地网络),请使用路由器分配的桌面IP地址(不是localhost
而不是{ {1}})。
要查找桌面的IP地址:
127.0.0.1
(Windows)或ipconfig
(Unix)
ifconfig
只会产生重要的东西ifconfig | grep "inet " | grep -v 127.0.0.1
和localhost
)如果您的手机已连接到移动网络,那么事情就会变得更加艰难。
去硬核:
127.0.0.1
答案 1 :(得分:187)
实际上非常简单。
localhost
启动服务器(我正在使用Windows的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
)注意:请将您的网络设置为“家庭网络”。将网络设置为家庭网络意味着您允许您的PC与其他设备共享内容相同的网络。
如果您使用的是Windows 10,可以使用以下方法完成此操作:
如果您遇到问题,最有可能与Windows防火墙有关。
答案 2 :(得分:53)
我通过启用远程管理来实现这一目的:
System preferences/sharing
您将看到与此类似的消息:
some.url.com
在您的Android设备上,您现在应该可以转到some.url.com
,该localhost
代表您的Mac上的ifconfig
。您还可以使用ngrok
获取Mac的IP地址。
ngrok
的便携式解决方案(任何具有Node.js的操作系统)如果您不介意使用临时域公开项目,可以使用localhost:9460
。假设我有一个在npm install ngrok -g
ngrok http 9460
上运行的应用程序我可以简单地写
https://f7c23d14.ngrok.io
这会给我:
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
我现在可以localhost
作为远程查看nginx
的方式。这非常适合与客户分享设计工作或进展。
nginx proxy_pass
代理传递的替代解决方案如果您通过81
运行此类内容,则需要进行更多调整 - 这是一种hacky方法,但它对我有用,我愿意接受改进建议:
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
重新加载并访问{{1}}
答案 3 :(得分:36)
使用简单的解决方案(只需从移动设备访问laptop_ip_addr:port
,当移动设备和笔记本电脑在同一个WiFi上时),我会收到 ERR_CONNECTION_REFUSED 错误。也就是说,我的MacBook似乎拒绝了我手机的连接尝试。
此解决方案适用于我<(使用MacBook进行测试)
adb reverse tcp:4000 tcp:4000
4000
http://localhost:4000/
,它实际上会连接到笔记本电脑,而不是移动设备请参阅说明here。
缺点是,这仅适用于单个移动设备。如果您想要使用其他移动设备进行访问,则必须首先断开第一个移动设备(禁用 USB调试),连接新设备(启用 USB调试),然后运行{ {1}}再次。
另一个应该始终有效的解决方案是 ngrok (如其他答案中所述)。它适用于Internet,而不是本地网络。
它非常易于使用:
adb reverse tcp:4000 tcp:4000
在其他一些信息中输出类似
的行brew cask install ngrok
ngrok http 4000
现在,您可以在任何连接到互联网的设备上导航至Forwarding http://4cc5ac02.ngrok.io -> localhost:4000
,此网址会重定向到您笔记本电脑的http://4cc5ac02.ngrok.io
。
请注意,只要ngrok命令正在运行(直到您点击 Ctrl-C ),您的项目就会公开服务。拥有该URL的每个人都可以看到它。
答案 4 :(得分:34)
我找到了这个问题的快速解决方案。试试这个link。它应该可以帮助您解决问题。
我只更改了一件事,教程声明您将'127.0.0.1'更改为'All',而是将其更改为运行服务器的IP地址。
之后,您应该能够连接到本地主机。
以下是链接页面信息的(校对)副本:
安装Wamp服务器(或您喜欢的任何其他服务器)。
这是我知道设置本地服务器的最佳服务器之一。如果您已安装Apache或任何其他服务器,请忽略此步骤。
从这里下载并安装Wamp Server。
在Windows防火墙中为端口80添加新规则。
打开“控制面板”并选择“Windows防火墙”。
从Windows防火墙设置页面的左侧面板中选择高级设置。
从左侧面板中选择入站规则,然后选择新建规则。
选择“端口”,然后单击“下一步”。
选择“特定本地端口”单选按钮并输入80作为端口值。
继续保持连接不变,然后转到下一步。
保持“配置文件”选项不变,然后单击“下一步”。
为新规则添加一些好名称,然后单击“完成”。
这将启用本地网络IP上的端口80访问。
编辑Wamp服务器的httpd.conf文件以修复403错误。
我们需要编辑此文件。否则,当我们通过本地网络IP访问本地主机时,我们将收到403禁止错误。
单击Wamp服务器托盘图标。
打开Apache服务器子菜单。
选择httpd.conf。
在httpd.conf文件中找到此配置部分:
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”,保存文件,然后重新启动Wamp服务器。
找到您的本地网络IP。
打开命令提示符。
输入并输入ipconfig
命令。
就我而言,我的局域网地址是10.0.0.2。
这是您通过wifi访问Android手机上的本地主机所需的IP。要测试它是否正常工作,请在安装了localhost服务器的桌面浏览器中键入此IP地址。浏览器应该成功显示您的localhost页面。这将确保您的Android手机上现在可以成功访问此本地网络IP。
我希望本教程能帮助您通过wifi访问本地主机。
答案 5 :(得分:34)
在Windows PC上除了使用“ipconfig”命令查找IPv4地址外,您可能不需要做任何其他事情。
其他环境详情: Windows 7,Google Nexus 4(4.2.2),Tomcat服务器,Grails应用程序。
您还应该确保您拥有在AndroidManifest文件中访问互联网的权限:
<uses-permission android:name="android.permission.INTERNET"/>
答案 6 :(得分:13)
然而,有一个更好的解决方案。您可以使用IP地址“10.0.2.2”访问主机。这是由Android团队以这种方式设计的。因此,您的网络服务器可以在localhost上完美运行,您可以通过“http://10.0.2.2:8080”从Android应用程序访问它。
答案 7 :(得分:11)
由于这是一个老问题,有一种新的方法可以做到这一点非常简单。下载ADB Chrome Extension,然后按照以下说明操作:
https://developers.google.com/chrome-developer-tools/docs/remote-debugging
答案 8 :(得分:6)
“Chrome for Android上的端口转发功能可以让您轻松在移动设备上测试您的开发网站。它可以通过在您的移动设备上创建一个侦听TCP端口来实现,该端口映射到开发计算机上的特定TCP端口。这些端口之间的流量传输通过USB,所以连接不依赖于您的网络配置。“
此处有更多详情:https://developer.chrome.com/devtools/docs/remote-debugging#port-forwarding
答案 9 :(得分:5)
您可以让您的Web服务器在环回接口上侦听,而不是在网络接口上侦听。主要迹象是:
127.0.0.1
和localhost
(来自localhost或Android模拟器)工作192.168.xxx.xxx
上的点击不起作用,无论是来自localhost,LAN还是WAN 我更多地讨论了诊断问题并在答案here中解决这个问题。
答案 10 :(得分:4)
尝试转到此文件:
C:\wamp\bin\apache\Apache2.2.11\conf\httpd.conf
# onlineoffline tag - don't remove
Order Deny,Allow
Allow from all // change it Deny
Allow from 127.0.0.1
将10.0.2.2更改为您的IP地址。
答案 11 :(得分:4)
最终在Ubuntu中完成,我在localhost:8080上运行nodejs服务器
1)打开终端类型ifconfig 你会得到这样的ip:inet addr:192.168.43.17
2)现在简单地把url地址放在这样: “192.168.43.17:8080”(8080端口来自localhost端口号) 例如:“192.168.43.17:8080/fetch”
答案 12 :(得分:4)
以管理员身份运行CMD
并在CMD屏幕上输入 ipconfig ,屏幕将显示文字
这张照片
您可以使用此IP访问您的localhost 您必须连接到连接到
的电脑的同一网络答案 13 :(得分:4)
如果您使用的是真实设备但仍然遇到问题,请按照以下步骤操作,因为这些步骤可以帮助我解决问题:
https://localhost:44301
adb reverse tcp:44301 tcp:44301
44301
替换为您的 port number
希望您能够毫无问题地运行。
Happy codding
答案 14 :(得分:3)
当您的移动设备和计算机不在同一网络中时,可以使用此解决方案:
在这种情况下,您需要使用端口转发。 在Google Chrome浏览器检查窗口(chrome:// inspect)中,您可以看到已连接的设备。
单击端口保护按钮,然后将随机端口(例如3000)设置为笔记本电脑使用的端口(例如8080)。
现在从设备使用localhost:3000来访问笔记本电脑中的localhost:8080(or_whatever_ip:portno)。 您可以在移动浏览器中检查它。在移动浏览器中尝试localhost:3000。 确保选中“端口转发设置”窗口中的“启用端口转发”复选框
答案 15 :(得分:2)
使用多个不同的localhost服务器遇到此问题。最后通过使用Python简单服务器,在几秒钟内完成了我的应用程序并在手机上运行。它只需要几秒钟,因此在进入任何更复杂的解决方案之前值得一试。首先,确保安装了Python。 cmd+r
并为Windows键入python
或在mac终端中键入$ python --version
。
下一步:
cd <your project root>
$ python -m SimpleHTTPServer 8000
然后在网络上找到主机的地址,我在mac上使用System Preferences/Sharing
来查找它。点按进入您的Android设备即可加载index.html
,您应该很好。
如果没有,则问题是其他问题,您可能需要查看其他一些建议的解决方案。祝你好运!
*编辑*
如果您正在使用Chrome,另一种快速解决方案是使用Chrome扩展程序的Web服务器。我发现在手机上访问localhost是一种快速而简单的方法。只需确保检查Accessible to local network
下的Options
,它就可以在您的手机上正常工作。
答案 16 :(得分:2)
首先将手机和电脑连接到普通的wifi。
然后,使用以管理员身份运行
打开命令提示符提供ipconfig命令
显示无线局域网
使用服务器的IP:端口访问电话
答案 17 :(得分:2)
我使用了这个过程:
请注意,此过程要求您在每个会话的开始和结束时更改Android设备上的WiFi设置。我发现这比根植我的Android设备要痛苦得多。
答案 18 :(得分:2)
默认localhost的更简单方法是使用http://localhost:port。这适用于笔记本电脑和Android。
如果它不起作用,那么在android中将手机的默认IP设置为127.0.0.1:port :)
打开终端并输入: -
hostname -i
#127.0.0.1
hostname -I
#198.168.*.*
答案 19 :(得分:1)
首先使您的机器(服务器正在运行)IP地址静态。在android代码中输入此静态IP地址。
接下来转到wifi路由器的界面并检查左侧面板。您将看到端口转发/转发等选项。单击它并转发端口80。
现在编辑htttpd.conf
文件并编辑
全部允许
。重启服务器。一切都应该现在正常。
此外,您可以保留机器的IP地址,以便始终为您分配。
在路由器界面的左侧面板中,找到DHCP -> Address Reservation
,单击它。输入机器的MAC地址和您在代码中输入的IP地址。点击保存。这将保留您机器的给定IP地址。
答案 20 :(得分:1)
Windows 的解决方案:
您无法查看您的网站,主要是因为您的防火墙( 默认OS防火墙或Antivirus防火墙)阻止传入 连接。
在Windows防火墙上:
要允许特定端口上的传入连接,请转到:
控制面板> Windows Defender防火墙>高级设置>右 点击入站规则>添加新规则。
然后:
- 选择“端口”单选按钮。
- 输入您要在其上启用传入连接的特定端口/范围(运行服务器的端口)
- 选择“允许连接”单选按钮。
- 单击下一步(除非要更改默认值)
- 为规则命名,然后单击“完成”。
注意:
如果您使用的是具有防火墙的防病毒软件,则上述步骤将不起作用,因为防病毒软件会禁用Windows防火墙,而是运行自己的防火墙。
在这种情况下,取决于防病毒程序,请转到防病毒的防火墙设置并打开端口。
答案 21 :(得分:1)
A solution to connect my mobile device to my wamp server based on my laptop:
First, wifi is not a router. So to connect my mobile device to my wamp server based on localhost on my laptop, I need a router. I have downloaded and installed a free virtual router: https://virtualrouter.codeplex.com/
Configuring it is really simple:
Then you can connect to your laptop via your device by launching a browser and fill the IPV4 address of your laptop (to find it on windows, type in cmd : ipconfig, and find ipv4 address)
You should see your wamp server home page.
答案 22 :(得分:1)
Ngrok是最好的解决方案。
如果您正在开发PHP,则建议您安装Laravel Valet,它具有MacOS和Linux版本,那么您可以使用valet share
命令。如果您正在开发任何前端技术,并且需要共享3000之类的端口,则直接使用ngrok ngrok http 3000
答案 23 :(得分:1)
要检查的另一件事是,当同时启用2.4G和5G并且设备处于不同频率时,某些路由器在桥接请求方面存在问题。尝试禁用其中一个频率,以便将两个设备都连接到同一接口。
答案 24 :(得分:1)
ngrok允许您将localhost放到临时服务器上,并且设置非常简单。我在这里提供了一些可以在链接中找到的步骤:
ngrok http [port number]
您将在终端中看到一个带有指向您本地主机的地址的小仪表板。将您的应用指向该地址并构建到您的设备。
答案 25 :(得分:1)
虽然已经接受了一个答案,但这对我有用:
ifconfig
并查找en0/en1 -> inet
,它应该类似于19*.16*.1.4
。)(在Windows上,使用`ipconfig)打开您的移动设置并转到网络 - &gt;长按你的wifi网络 - &gt;修改网络 - &gt;向下滚动到高级选项 - &gt;选择代理手册并在代理主机名中键入您的地址,即在端口内19*.16*.1.4
输入您的端口。并保存。
在Google Chrome浏览器中搜索what is my ip
并获取您的IP,让我们说它是1**.1**.15*.2**
1**.1**.15*.2**:port/
。就这么简单。
答案 26 :(得分:1)
EASIEST方式(这对我来说完美无缺)是在0.0.0.0:<port_no>
本地托管您的网站并使用移动设备访问它,在浏览器中使用<local_ipv4_address>:<port_no>/<path>
。
ipconfig
答案 27 :(得分:1)
这对我有用,我在127.0.0.1 ip之后添加了另一行,以指定我想要使用的设备的确切本地网络IP地址(不是公共IP地址)。在我的情况下我的三星Galaxy S3
根据Bangptit的建议编辑httpd.conf文件(x是版本号): C:\瓦帕\ BIN \阿帕奇\ Apache2.x.x \ CONF \ httpd.conf中
搜索onlineoffline标签并添加手机的IP(我在路由器配置页面中找到了我的手机IP地址):
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.1.65
Allow from ::1
Allow from localhost
可以将其扩展为包括整个子域,例如192.168.1.0/24等
答案 28 :(得分:1)
在你的ubuntu / Macbook中使用它来获取系统的ip地址。您的移动设备和系统应位于同一网络中
ip addr | grep inet
这会给你一个看起来像192.168.168.46
的IP地址。在智能手机中使用它。
希望这有帮助。
答案 29 :(得分:0)
在创建应用程序时,使用移动设备进行调试或渲染会很有帮助。可以使用带有 IPv4 地址和端口号的移动设备访问系统 localhost。应该注意的是,要实现这一点,两个设备都应该连接到相同的 wifi 或网络,并且机器网络应该是私有的。
答案 30 :(得分:0)
简单。 首先让您的android设备和计算机连接在同一网络上。例如路由器 通过Windows + R打开命令提示符,搜索cmd,然后打开。在命令上,输入ipconfig并获取ipv4地址。
NB:防火墙会阻止您的计算机通过网络访问,因此,无论是公用的还是专用的,您都需要关闭网络的防火墙。
如何关闭防火墙 打开控制面板>系统和安全性> Windows防火墙>在左窗格中,选择打开和关闭Windows防火墙。 >然后选择关闭Windows防火墙(不推荐)
您完成了
然后打开您的移动设备并运行您的IP地址192.168.1.xxx
答案 31 :(得分:0)
在Mac上,如果您的服务器在8080中,请在终端上运行此命令
echo "
rdr pass inet proto tcp from any to any port 8080 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
答案 32 :(得分:0)
拥有netconfig xml并将其分配在manifest.xml中是最好的解决方法。这将绕过androids默认的https only约束。
答案 33 :(得分:0)
如果您在Linux上运行 这对我有用
sudo iptables -F
答案 34 :(得分:0)
答案 35 :(得分:0)
在Linux上使用ip addr
而不是ifconfig
,因为ifconfig
已弃用多年,默认情况下未在最近的发行版中安装
答案 36 :(得分:0)
非常简单, - GOTO命令行(Window + R [type cmd]) - 输入ipconfig,它将显示PC的当前IP地址 - 在Android手机的浏览器上写入taht IP地址: 80 eg(http://192.168.x.x:80)
完成
localhost将出现在您的手机上
答案 37 :(得分:0)
为未来的开发人员添加解决方案。
复制您的IP地址。右键点击您的网络 - &gt;网络和共享 - &gt;点击您目前拥有的连接 - >详情 - &GT;那么ipv4地址旁边的地址就是你的ip地址,请记下这个地方
转到控制台 - &gt;系统和安全 - &gt; windows防火墙 - &gt;高级设置 - &gt;入境规则 - &gt;新规则(按照添加端口的步骤,例如80,它很容易遵循)
将您记下的IP地址放在手机浏览器上,并在旁边创建规则的端口号。例如192.168.0.2:80和wala。
如果没有连接可能的解决方案。 右击网络 - >开放网络和共享 - &gt;查看您的活动连接,在连接类型的连接名称下,如果它是公共的,请单击它,并确保将其更改为家庭网络。
答案 38 :(得分:0)
什么对我有用(目标:调试运行在localhost上的Windows服务器应用程序:99999来自在Android手机上运行的客户端应用程序)
然后可以通过手机访问服务应用网址(my_dev_machine_ip:99999 / path_to_service)。
答案 39 :(得分:0)
我个人在使用设备时并不坚持使用localhost,没有简单的解决方案。
只需启动连接到localhost的活动,您可以在其中使用模拟器。无论您从设备获得什么信息都可以轻松生成,并可以作为参数发送到活动。
答案 40 :(得分:0)
使用connectify
和xampp
或等效内容,并在移动网址栏中输入IP地址进行访问
答案 41 :(得分:0)
(例如,如果您使用WAMP服务器):
1)在您的PC上安装Android驱动程序并下载便携式Android Tethering Reverse Tool并通过反向工具应用程序连接您的Android设备。
2)点击WAMP图标&gt;放在线(重启后)。
3)在Android浏览器中打开您的IP(即http://192.168.1.22
或http://164.92.124.42
)
要查找您的本地IP地址,请点击开始&gt;运行&gt; cmd ,然后输入 ipconfig ,您的IP地址将显示在输出中。
这就是全部。现在您可以从Android访问(打开)localhost。