首页 文章

如何从Android设备访问本地主机?

提问于
浏览
390

我'm able to access my laptop web server using the Android emulator, I'使用 10.0.2.2:portno 效果很好 .

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

我错过了什么?

30 回答

  • 0

    在ubuntu / Macbook中使用它来获取系统的IP地址 . 您的移动设备和系统应位于同一网络中

    ip addr | grep inet 这会给你一个看起来像 192.168.168.46 的IP地址 . 在智能手机中使用它 .

    希望这可以帮助 .

  • 1

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

    1)打开终端类型ifconfig你会得到这样的ip:inet addr:192.168.43.17

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

  • 275

    首先将手机和电脑连接到普通的wifi .

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

    给ipconfig命令

    其中显示无线局域网

    使用服务器的ip:port在手机中访问

  • 5

    我个人在使用设备时并不坚持使用localhost,没有简单的解决方案 .

    只需启动连接到localhost的活动,您可以在其中使用模拟器 . 无论您从设备获得什么信息都可以轻松生成,并可以作为参数发送到活动 .

  • 1

    mac osx用户

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

    确保您的手机和笔记本电脑连接到Mac上的同一个wifi网络,转到系统首选项/共享启用远程管理

    您将看到类似于此的消息

    其他用户可以使用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 作为远程查看localhost的方法 . 这非常适合与客户分享设计工作或进展


    具有nginx代理传递的

    备用解决方案

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

    • 启用远程管理(如上所述)

    • 暂时将服务器设置为侦听端口 81 而不是 80

    • sudo nginx -s reload

    • 访问 http://youripaddress:81

    
    ```java
    server {
      listen 80;
      listen 81; # <-------- add this to expose the app on unique port
      server_name  ~^(local|local\.m).example.com$;
      ...
    }
    

    重新加载并访问 http://youripaddress:81

  • 6

    我用过这个过程:

    • 在PC上安装Fiddler

    • 在这些excellent instructions之后设置PC和Android设备

    • 只需转到Android设备上的浏览器并输入http://ipv4.fiddler即可访问localhost

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

  • 1

    由于这是一个老问题,有一种新的方法可以做到这一点非常简单 . 下载ADB Chrome Extension,然后按照以下说明操作:

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

  • 11

    ngrok允许您将localhost放到临时服务器上,设置非常简单 . 我在这里提供了一些可以在链接中找到的步骤:

    • 从上面的链接下载ngrok zip

    • 打开拉链

    • 在本地运行您的服务器并记下端口号

    • 在终端中,转到ngrok所在的文件夹并输入 ngrok http [port number]

    您将在终端中看到一个带有指向本地主机的地址的小仪表板 . 将您的应用指向该地址并构建到您的设备 .

  • 32

    为未来的开发者添加解决方案 .

    复制您的IP地址的地址 . 右键单击您的网络 - >网络和共享 - >点击您当前的连接 - >详细信息 - >然后ipv4地址旁边的地址是您的IP地址,请注意某处

    转到控制面板 - >系统和安全 - > windows防火墙 - >高级设置 - >入站规则 - >新规则(按照添加端口的步骤,例如80,其操作非常简单)

    将您记下的IP地址放在手机浏览器上,并在其旁边创建规则的端口号 . 例如192.168.0.2:80和wala .

    如果它没有连接可能的解决方案 . 右键单击网络 - >打开网络和共享 - >查看您的活动连接,在连接类型的连接名称下,如果它是公共的,请单击它,并确保将其更改为家庭网络 .

  • 47

    这对我有用,我在127.0.0.1 ip之后添加了另一行,以指定我想要使用的设备的确切本地网络IP地址(不是公共IP地址) . 在我的情况下我的三星Galaxy S3

    根据Bangptit的建议编辑httpd.conf文件(x是版本号):C:\ wamp \ bin \ apache \ Apache2.x.x \ conf \ httpd.conf

    搜索onlineoffline标签并添加手机的IP(我在路由器配置页面中找到了我的手机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等

  • 1

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


    ADB反向套接字(仅限Android)

    这个解决方案 works 对我来说(测试用的MacBook):

    • 使用USB线将Android移动设备连接到笔记本电脑

    • 在移动设备上启用USB调试

    • 在笔记本电脑上,运行 adb reverse tcp:4000 tcp:4000

    • 使用您的自定义端口号而不是 4000

    • 现在,在移动设备上,您可以导航到 http://localhost:4000/ ,它实际上将连接到笔记本电脑,而不是移动设备

    见说明here .

    缺点是这只适用于 single mobile device at a time . 如果要使用其他移动设备进行访问,则必须先断开第一个(禁用USB调试),连接新的(启用USB调试),然后再次运行 adb reverse tcp:4000 tcp:4000 .


    ngrok(适用于所有设备)

    另一个应该始终有效的解决方案是 ngrok (如其他答案中所述) . 它适用于Internet,而不是本地网络 .

    它非常易于使用:

    brew cask install ngrok
    ngrok http 4000
    

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

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

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

    请注意,只要ngrok命令正在运行(直到您按Ctrl-C),您的项目就会公开提供 . 拥有URL的每个人都可以看到它 .

  • 0

    我找到了这个问题的快速解决方案 . 试试这个link . 它应该可以帮助您解决问题 .

    我只更改了一件事,教程声明您将“127.0.0.1”更改为“全部”,而是将其更改为运行服务器的IP地址 .

    之后,您应该能够连接到本地主机 .


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

    第1步

    安装Wamp服务器(或您喜欢的任何其他服务器) .

    这是我知道设置本地服务器的最佳服务器之一 . 如果已安装Apache或任何其他服务器,请忽略此步骤 .

    从这里下载并安装Wamp Server .

    第2步

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

    • 打开“控制面板”,然后选择“Windows防火墙” .

    • 从Windows防火墙设置页面的左侧面板中选择高级设置 .

    • 从左侧面板中选择入站规则,然后选择新规则 .

    • 选择“端口”并单击“下一步” .

    • 选择“特定本地端口”单选按钮,并输入80作为端口值 .

    • Keep保持连接不变,然后转到下一步 .

    • 保持配置文件选项不变,然后单击下一步 .

    • 为新规则添加一些好名称,然后单击“完成” .

    这将使端口80能够访问本地网络IP .

    第3步

    编辑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服务器 .

    第4步

    找到您的本地网络IP .

    • 打开命令提示符 .

    • 输入并输入 ipconfig 命令 .

    • 就我而言,我的局域网地址是10.0.0.2 .

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

    我希望本教程能帮助您通过wifi访问本地主机 .

  • 1

    这很简单 .

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

    在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 .

    Note : Please set your network as "Home Network". 设置家庭网络意味着允许您的PC与同一网络上的其他设备共享内容 . 如果您使用的是Windows 10,请转到WiFi>当前网络的网络属性>使此PC可被发现 .

  • 0

    Ngrok是最好的解决方案 . 如果您正在开发PHP,那么我建议安装Laravel Valet,它有MacOS和Linux版本,那么您可以使用 valet share 命令 . 如果您正在开发任何前端技术并需要共享像3000这样的端口,那么直接使用ngrok ngrok http 3000

  • 1

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

  • 0

    默认localhost的更简单方法是使用http://localhost:port . 这适用于笔记本电脑和Android .

    如果它不起作用,那么在android中将手机的默认IP设置为127.0.0.1:port :)

    打开终端并输入: -

    hostname -i
     #127.0.0.1
     hostname -I
     #198.168.*.*
    
  • 4

    它非常简单, - GOTO命令行(Window R [type cmd]) - 输入ipconfig,它将显示你电脑的当前IP地址 - 在你的Android手机浏览器上写入taht IP地址:例如:http://192.168.x.x:80

    完成

    localhost将出现在您的手机上

  • 2

    在Windows PC上您可能不需要使用“ipconfig”命令查找IPv4地址 .

    • 步骤1:使用USB线将手机连接到PC .

    • 步骤2:使用命令'ipconfig'查找您的IPv4地址(路由器的外部IP),例如我的情况下为192.168.1.5 .

    • 步骤3:只需从手机浏览器访问"192.168.1.5:8080"即可 . 有用 !

    其他环境详情:Windows 7,谷歌Nexus 4(4.2.2),Tomcat服务器,Grails应用程序 .

    您还应该确保您拥有在AndroidManifest文件中访问互联网的权限:

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

    虽然已经接受了一个答案,但这对我有用:

    • 确保您的计算机和Android设备在同一网络上 .

    • 获取计算机的IP地址 . (如果mac类型 ifconfig 在终端内部并查找 en0/en1 -> inet 它应该类似于 19*.16*.1.4 . )(在windows上,使用`ipconfig)

    • 打开您的手机设置并转到网络 - >长按您的wifi网络 - >修改网络 - >向下滚动到高级选项 - >选择代理手册并在代理主机名中键入您的地址,即 19*.16*.1.4 在端口内输入您的端口 . 并保存 .

    • 在谷歌浏览器中搜索 what is my ip ,并获取你的IP,让我们说它是 1**.1**.15*.2**

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

    就这么简单 .

  • 1

    “Chrome for Android上的端口转发可以让您轻松地在移动设备上测试您的开发网站 . 它的工作原理是在移动设备上创建一个映射到开发计算机上特定TCP端口的侦听TCP端口 . 这些端口之间的流量通过USB传输,所以连接不依赖于您的网络配置 . “

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

  • 172

    EASIEST方式(这对我来说完美无缺)是在 0.0.0.0:<port_no> 本地托管您的网站并使用移动设备访问它,在浏览器中使用 <local_ipv4_address>:<port_no>/<path> .

    • 要了解您的本地ipv4地址,只需在cmd中键入 ipconfig 即可

    • 连接到SAME网络的任何设备都可以访问此URL .

  • 32

    尝试转到此文件: 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地址 .

  • 4

    使用几个不同的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 ,你应该是好的 .

    如果没有,则问题是其他问题,您可能需要查看其他一些建议的解决方案 . 祝好运!

    *** EDIT ***

    如果您使用Chrome,另一种快速解决方案是使用Chrome扩展程序的Web Server . 我发现在手机上访问localhost是一种快速而简单的方法 . 只需确保在 Options 下检查 Accessible to local network ,它应该可以在您的单元格上正常工作 .

  • 11

    以管理员身份运行CMD

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

    这张照片
    enter image description here

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

  • 1

    USB不向移动设备提供网络 .

    If both your desktop and phone are connected to the same WiFi (或任何其他本地网络),然后使用路由器分配的桌面IP地址(不是 localhost 而不是 127.0.0.1 ) .

    要查找桌面的IP地址,请执行以下操作:

    • 键入命令行 ipconfig (Windows)或 ifconfig (Unix)

    • 在Linux上,单行 ifconfig | grep "inet " | grep -v 127.0.0.1 只会产生重要的东西

    • 有一个关于如何在Windows上获得类似输出的bunch of suggestions

    • 那里's going to be a bunch of IP' s

    • 尝试所有这些(除了前面提到的 localhost127.0.0.1

    If your phone is connected to the mobile network ,事情会变得更难 .

    去硬核:

    • 首先找出你的路由器外部IP地址(https://www.google.de/search?q=myip

    • 然后,在路由器上,转发一些端口 <your desktop IP>:<server port number>

    • 最后使用外部IP地址和转发端口

    否则使用xip.iongrok之类的东西 .

  • 2

    首先使您的机器(服务器正在运行)IP地址静态 . 在android代码中输入此静态IP地址 . 接下来转到wifi路由器的界面并检查左侧面板 . 您将看到端口转发/转发等选项 . 单击它并转发端口80.现在编辑 htttpd.conf 文件并编辑它

    全部允许

    . 重启你的服务器 . 一切都应该现在正常 .

    此外,您可以保留机器的IP地址,以便始终分配给您 . 在路由器界面的左侧面板中,找到 DHCP -> Address Reservation ,单击它 . 输入您的机器的MAC地址和您在代码中输入的IP地址 . 点击保存 . 这将保留您机器的给定IP地址 .

  • 0

    您可以让Web服务器在环回接口上侦听,而不是在网络接口上侦听 . 主要迹象是:

    • 点击 127.0.0.1localhost (来自localhost或Android模拟器)工作

    • 192.168.xxx.xxx 上的点击不起作用,无论是来自localhost,LAN还是WAN

    我更多地谈论诊断这个并在答案中解决这个问题here .

  • 4

    什么对我有用(目标:调试运行在localhost上的Windows服务器应用程序:99999从Android手机上运行的客户端应用程序)

    • 手机和PC连接在同一网络上,例如192.168.1.xxx(在我的情况下通过wifi连接)

    • 在Windows防火墙中启用端口99999

    • 以管理员身份在cmd中运行:netsh http add urlacl url = http:// *:99999 / user = Everyone

    然后可以从手机访问服务应用程序URL(my_dev_machine_ip:99999 / path_to_service) .

  • 2

    A solution to connect my mobile device to my wamp server based on my laptop:

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

    配置它非常简单:

    • 右键单击系统托盘中的虚拟路由器图标

    • 单击“配置虚拟路由器”

    • 填写密码

    • 如果您的互联网连接在以太网中,请选择共享连接:以太网

    • 然后在您的笔记本电脑和设备上设置wifi

    • 在您的设备上连接到虚拟路由器网络名称

    然后,您可以通过启动浏览器连接到笔记本电脑,并填写笔记本电脑的IPV4地址(在Windows上找到它,输入cmd:ipconfig,然后找到ipv4地址)

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

  • 1

    然而,有一个更好的解决方案 . 您可以使用IP地址“10.0.2.2”访问主机 . 这是由Android团队以这种方式设计的 . 因此,您的网络服务器可以在localhost上完美运行,您可以通过“http://10.0.2.2:8080”从Android应用程序访问它 .

相关问题