我怎样才能从我的Android设备访问我的本地主机?

我能够访问我的笔记本电脑的Web服务器使用Android模拟器,我使用10.0.2.2:portno运作良好。

但是,当我连接我的真正的Android手机,手机浏览器无法连接到我的笔记本电脑上的同一个Web服务器。 手机使用USB电缆连接到笔记本电脑。 如果我运行adb devices命令,我可以看到我的手机。

我错过了什么?

USB不提供networking到移动设备。

如果桌面和手机都连接到相同的WiFi (或任何其他本地networking),则使用由路由器(不是localhost而不是127.0.0.1 )分配的桌面IP地址。

要找出您的桌面的IP地址:

  • 键入命令行ipconfig (Windows)或ifconfig (Unix)
  • 将会有一堆IP
  • 尝试所有这些(除了前面提到的localhost127.0.0.1

如果你的手机连接到移动networking ,那么事情将变得更加困难。

要么硬派:

  • 首先找出你的路由器的外部IP地址( https://www.google.de/search?q=myip
  • 然后,在路由器上,将某个端口转发到<your desktop IP>:<server port number>
  • 最后使用外部IP地址和转发端口

否则使用像xip.io或ngrok的东西。

这很简单。

打开您的Android手机/路由器的Wifi热点,并将您的笔记本电脑连接到您的手机。

在localhost启动你的服务器(我正在使用wamp服务器)

现在打开命令提示符并inputipconfig命令,你会得到如下的东西

 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

注意:请将您的networking设置为“家庭networking”。 设置家庭networking意味着允许您的PC与同一networking上的其他设备共享资料。 如果使用Windows 10,请转到WiFi>当前networking的networking属性>使此PC可被发现。

在Windows PC上使用“ipconfig”命令查找IPv4地址可能不需要做任何其他操作。

  • 第1步:使用USB电缆将手机连接到PC。
  • 步骤2:使用命令'ipconfig'找出你的IPv4地址(路由器的外部IP),例如192.168.1.5。
  • 步骤3:只需从手机浏览器访问“192.168.1.5:8080”即可。 有用 !

其他环境详细信息:Windows 7,Google Nexus 4(4.2.2),Tomcat服务器,Grails应用程序。

您还应该确保您有权限访问AndroidManifest文件中的Internet:

 <uses-permission android:name="android.permission.INTERNET"/> 

我发现这个问题的一个快速解决scheme。 试试这个链接 。 它应该可以帮助你解决这个问题。

我只改变了一件事情,教程指出你将“127.0.0.1”改为“全部”,改为服务器运行的IP地址。

之后,你应该能够连接到你的本地主机。


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

步骤1

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

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

从这里下载并安装Wamp Server。

第2步

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

  1. 打开控制面板并selectWindows防火墙。

  2. 从Windows防火墙设置页面的左侧面板中select高级设置。

  3. 从左侧面板中select入站规则,然后select新build规则。

  4. select端口然后单击下一步。

  5. select“特定本地端口”单选button,并input80作为端口值。

  6. 保持允许连接不变并转到下一步。

  7. 保持“configuration文件”选项不变,然后单

  8. 给新的规则一些好的名字,然后点击完成。

这将启用本地networkingIP上的端口80访问。

第3步

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

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

  1. 点击Wamp服务器托盘图标。

  2. 打开Apache服务器子菜单。

  3. selecthttpd.conf。

  4. 在httpd.conf文件中find这个configuration部分:

     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 

find“127.0.0.1”并用“全部”replace,保存该文件,然后重新启动Wamp服务器。

步骤4

find您的本地networkingIP。

  1. 打开命令提示符。

  2. 键入并inputipconfig命令。

  3. 在我的情况下,我的局域网地址是10.0.0.2。

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

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

mac osx用户

我通过启用远程pipe理获得了成功:

  1. 确保您的phone and laptop are connected to the same wifi network
  2. 在Mac上,转到system preferences/sharing
  3. enable remote management

你会看到类似这样的消息

其他用户可以使用地址some.url.com来pipe理您的计算机

在你的Android设备上,你现在应该能够打到some.url.com ,它代表你的Mac上的localhost 。 你也可以使用ifconfig来获取你的macbook的ip


使用ngrok的便携式解决scheme(任何带有node或npm的操作系统)

如果您不介意将您的项目暴露给临时域,则可以使用ngrok 。 比方说,我有一个应用程序在localhost:9460上运行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来远程查看本地主机。 与客户分享devise工作或进展,这是非常好的


备用解决scheme与Nginx的代理通行证

如果你通过nginx proxy_pass运行这样的东西,它将需要更多的调整 – 这是一个hacky的方法,但它适用于我,我很乐意改进它的build议:

  • 启用远程pipe理(如上所述)
  • 暂时将服务器设置为在端口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

由于这是一个古老的问题,有一个新的方法可以做到这一点非常简单。 下载ADB Chrome扩展程序 ,然后按照以下说明进行操作:

https://developers.google.com/chrome-developer-tools/docs/remote-debugging

然而,有一个更好的解决scheme。 您可以使用IP地址“10.0.2.2”访问主机。 这是由Android团队以这种方式devise的。 所以你的web服务器可以完美运行在本地主机上,从你的Android应用程序,你可以通过“http://10.0.2.2:8080”访问它。;

您的Web服务器可能在您的回环接口上进行监听,而不是在您的networking接口上进行监听。 主要迹象是:

  • 点击127.0.0.1localhost (从本地或Android模拟器)工作
  • 点击192.168.xxx.xxx不起作用,无论是从本地主机,局域网或广域网

我会更多地讨论这个问题,并在这里回答这个问题。

“Android版Chrome浏览器中的端口转发function使您可以轻松地在移动设备上testing您的开发站点,它可以通过在您的移动设备上创build一个侦听TCP端口来映射到开发计算机上的特定TCP端口,这些端口之间的stream量通过USB传输,所以连接不依赖于你的networkingconfiguration。“

更多细节在这里: https : //developer.chrome.com/devtools/docs/remote-debugging#port-forwarding

以pipe理员身份运行CMD

并在CMD屏幕上inputipconfig ,屏幕将显示文本

作为这张照片 在这里输入图像描述

你可以访问你的本地主机使用这个IP你必须连接到你的电脑连接到相同的networking

试试看这个文件: 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地址。

我使用这个过程:

  • 在PC上安装Fiddler
  • 按照这些优秀的说明设置PC和Android设备
  • 只需转到Android设备上的浏览器并inputhttp://ipv4.fiddler即可访问本地主机

请注意,此过程要求您在每个会话的开始和结束时更改Android设备上的WiFi设置。 我发现这一点,然后根植我的Android设备的痛苦。

首先使你的机器(服务器运行的地方)的IP地址是静态的。 在android代码中input这个静态IP地址。 接下来去你的无线路由器的界面,并检查左侧面板。 您将看到端口转发/转发等选项。 点击它并转发端口80.现在编辑您的htttpd.conf文件并进行编辑

全部允许

。 重新启动您的服务器。 一切都应该现在正常工作。

此外,您可以保留机器的IP地址,以便始终将其分配给您。 在路由器界面的左侧面板中,findDHCP -> Address Reservation ,点击它。 input您的机器的MAC地址和您在代码中input的IP地址。 点击保存。 这将为您的机器保留给定的IP地址。

基于笔记本电脑将我的移动设备连接到我的wamp服务器的解决scheme:

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

configuration它非常简单:

  1. 右键单击系统托盘中的虚拟路由器图标
  2. 点击configuration虚拟路由器
  3. 填写密码
  4. 如果您的互联网连接在以太网中,请select共享连接:以太网
  5. 然后在您的笔记本电脑和设备上设置wifi
  6. 在您的设备上连接到虚拟路由器networking名称

然后,您可以通过启动浏览器连接到笔记本电脑,并填充笔记本电脑的IPV4地址(在Windows上find它,inputcmd:ipconfig,并findipv4地址)

你应该看到你的wamp服务器主页。

使用几个不同的本地主机服务器遇到了这个问题。 最后,只需使用Python简单服务器,即可在几秒钟内启动并运行我的应用程序。 这只需要几秒钟,所以在进入任何更复杂的解决scheme之前值得一试。 首先,确保你已经安装了Python。 cmd+r并inputpython for Windows或$ python --version在macterminal中。

下一个:

 cd <your project root> $ python -m SimpleHTTPServer 8000 

然后find你的主机在networking上的地址,我使用System Preferences/Sharing在Mac上find它。 点击到你的Android设备,应该加载你的index.html ,你应该是好的。

如果不是,那么问题是别的,你可能想看看其他一些build议的解决scheme。 祝你好运!

*编辑*

如果您使用Chrome,另一个快速解决scheme是Web服务器Chrome扩展。 我发现它是一个快速,超级简单的方法来访问我的手机上的本地主机。 只要确保在Options下检查Accessible to local network ,它应该在你的手机没有任何问题。

在这里输入图像描述

ngrok让你把你的本地主机放到临时服务器上,设置起来非常简单。 我在这里提供了一些可以在链接中find的步骤:

  1. 从上面的链接下载ngrok zip
  2. 打开邮编
  3. 在本地运行服务器并记下端口号
  4. 在terminal中,转到ngrok所在的文件夹,inputngrok http [port number]

您将在terminal中看到一个指向您本地主机的地址。 将您的应用指向该地址并构build到您的设备。

尽pipe一个答案已经被接受,但这对我来说很有效:

  1. 确保您的电脑和Android设备都在同一networking上。
  2. 得到你的电脑的IP地址。 (如果是terminal内的mactypes的ifconfig ,并且查找en0/en1 -> inet它应该是19*.16*.1.4类的东西)(在windows上使用ipconfig)
  3. 打开你的手机设置,进入networking – >长按你的wifinetworking – >修改networking – >向下滚动到高级选项 – >select代理手册,并在代理主机名input你的地址即19*.16*.1.4内部端口input港口。 并保存。

  4. searchwhat is my ip在谷歌浏览器,并获得您的IP,可以说是1**.1**.15*.2**

  5. 尝试访问1**.1**.15*.2**:port/从您的移动设备。

这是如此简单。

这是为我工作,我添加了127.0.0.1 IP后面的另一行来指定我想要使用的设备的确切的本地networkingIP地址(而不是公共IP地址)。 在我的情况下,我的三星Galaxy S3

按照Bangptit的build议编辑httpd.conf文件(x是版本号):C:\ wamp \ bin \ apache \ Apache2.xx \ conf \ httpd.conf

searchonlineoffline标签,并添加您的手机的IP(我在我的路由器configuration页中find了我的手机IP地址):

onlineoffline标签 – 不要删除

  Order Deny,Allow Deny from all Allow from 127.0.0.1 

我的手机ip在下面的行

  Allow from 192.168.1.65 Allow from ::1 Allow from localhost 

可以扩展到包括一个完整的子域,例如192.168.1.0/24等

首先把你的手机和电脑连接到普通的wifi上。

然后,以pipe理员身份运行以打开命令提示符

给ipconfig命令

其中显示无线局域网ip

使用您的服务器的ip:端口在手机访问

使用USB电缆:

(例如,如果您使用WAMP服务器):

1)在您的PC上安装您的Android驱动程序,并下载便携式Android共享反向工具,并通过反向工具应用程序连接您的Android设备。

2)点击WAMP图标>放置在线(重新启动后)。

3)在Android浏览器中打开你的IP(即http://192.168.1.22http://164.92.124.42

要查找您的本地IP地址,请单击开始>运行> cmd并键入ipconfig ,您的IP地址将显示在输出中。

就这样。 现在你可以从Android访问(打开)本地主机。

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


ADB Reverse Socket(仅限Android)

这个解决scheme适用于我(用MacBooktesting):

  1. 用USB线将Android移动设备连接到笔记本电脑
  2. 在移动设备上启用USBdebugging
  3. 在笔记本电脑上,运行adb reverse tcp:4000 tcp:4000
    • 使用您的自定义端口号而不是4000
  4. 现在,在移动设备上,您可以导航到http://localhost:4000/ ,它实际上将连接到笔记本电脑,而不是移动设备

看到这里的说明。

缺点是,这种方法一次只能使用一台移动设备 。 如果你想访问另一个移动设备,你必须先断开第一个(禁用USBdebugging ),连接新的(启用USBdebugging ),并再次运行adb reverse tcp:4000 tcp:4000


ngrok(适用于所有设备)

应该始终工作的另一个解决scheme是ngrok (如其他答案中所述)。 它通过互联网工作,而不是本地networking。

这非常容易使用:

 brew cask install ngrok ngrok http 4000 

这输出,在其他一些信息,像一条线

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

现在,您可以在连接到Internet的任何设备上导航到http://4cc5ac02.ngrok.io ,并且该URLredirect到您笔记本电脑的localhost:4000

请注意,只要ngrok命令正在运行(直到您按下Ctrl-C ),您的项目才会公开投放。 每个有URL的人都可以看到它。

最后在Ubuntu上完成,我正在localhost:8080上运行nodejs服务器

1)打开terminaltypesifconfig你会得到像这样的ip:inet addr:192.168.43.17

2)现在简单地把url地址这样写成:“192.168.43.17:8080”(8080端口来自localhost端口号)ex:“192.168.43.17:8080/fetch”

使用connectifyxampp或等效,并在移动URL栏上inputIP地址进行访问

就个人而言,我不坚持在使用设备时使用本地主机,没有简单的解决scheme。

只要开始连接到可以使用模拟器的本地主机的活动即可。 无论您需要从设备获取的信息都可以轻松生成,并可以作为参数发送到活动。

什么工作对我来说(目标:debugging运行在本地主机上的Windows服务器应用程序:99999从Android手机上运行的客户端应用程序)

  1. 电话和电脑连接在同一networking上,例如192.168.1.xxx(通过WiFi连接在我的情况)
  2. 在Windows防火墙中启用端口99999
  3. 以pipe理员身份在cmd中运行:netsh http add urlacl url = http:// *:99999 / user = Everyone

那么服务应用程序url(my_dev_machine_ip:99999 / path_to_service)可以从手机访问。

为未来的开发者添加解决scheme。

复制你的IP地址的地址。 右键点击你的networking – >networking和共享 – >点击你现在有的连接 – >详细信息 – >然后ipv4地址旁边的地址就是你的ip地址,记下这个地方

去控制面板 – >系统和安全 – > Windows防火墙 – >高级设置 – >入站规则 – >新规则(按照步骤添加一个端口,例如80,其真正简单的遵循)

把你记下的ip地址logging在你的手机浏览器上,并把你创build的规则的端口号放在旁边。 例如192.168.0.2:80和瓦拉。

如果没有连接,可能的解决scheme。 右键点击networking – >打开networking和共享 – >查看下你的活动连接,在连接types的连接名下查看,如果是公共的,点击它,并确保将其更改为家庭networking。

它非常简单, – GOTO命令行(Window + R [typescmd]) – typesIPCONFIG,将显示您的PC的当前IP地址 – 在您的Android手机的浏览器上写入IP地址:80 eg( http:// 192.168.xx:80 )

完成

本地主机将出现在您的手机上

最简单的方法(这对我来说是完美的)是在本地托pipe你的站点在0.0.0.0:<port_no>并使用移动设备访问它,在浏览器中使用<local_ipv4_address>:<port_no>/<path>

  • 要知道您的本地ipv4地址,只需在cmd中键入ipconfig
  • 任何连接到同一networking的设备都可以访问此url。