从USB连接的Android移动设备访问PC的本地主机


86

我有一个通过USB连接到PC的android设备(Samsung galaxy tab)。

我想使用WebServices并运行一个网页,该网页位于我的android设备上PC的本地xampp服务器上。

如果我的PC和android设备都连接在同一无线网络上,则可以实现。

但是,仅使用USB连接就可以在没有任何无线连接的情况下访问localhost页面。

(PS:当我在模拟器上运行应用程序并使用ip 10.0.2.2访问我的PC上的本地主机时,这种情况也适用。)


请使用下面的链接stackoverflow.com/questions/4779963/… 对我有用 。

1
在测试网页时关闭防火墙,或在防火墙设置中将IP添加到受信任的网络。
zeeali

看看这个博客 mycodingchannel.in/blog/…了解详细信息
kontashi35

Answers:


34

我终于解决了这个问题。我在Froyo上使用了三星GalaxyS。下面的“端口”与用于仿真器的端口相同(10.0.2.2:port)。我做了什么:

  1. 首先使用USB电缆连接您的真实设备(确保可以将应用程序上传到设备上)
  2. 从您连接的设备获取IP地址,该地址以192.168.xx:port开头
  3. 打开“网络和共享中心”
  4. 在设备上单击“本地连接”,然后选择“详细信息”
  5. 将“ IPv4地址”复制到您的应用中,并替换为: http://192.168.x.x:port/test.php
  6. 再次将您的应用上传到您的真实设备
  7. 转到属性,然后打开“ USB绑定”
  8. 在设备上运行您的应用程序

现在应该可以了。


如果执行此操作,则会收到未知的主机异常。
亚伦F

4
看来,这个答案虽然可行,但假定Android设备和计算机都连接到无线访问点,这与作者试图实现的目的相反。
雅各布

2
应当注意,这是仅Windows解决方案。
dotnetCarpenter '18

2
我同意@Jacob,这不能回答问题。问题本身表明他可以通过wifi连接。
bradlis7

1
这不能回答问题。这是正确的答案:stackoverflow.com/a/53920173/2947592
wvdz

44

Google在这里发布了针对此类问题的解决方案

步骤:

  • 在启用USB调试的情况下连接您的Android设备和开发计算机
  • 在开发机中打开Chrome,打开新标签,右键点击新的浏览器标签,然后点击检查
  • 单击右上角的三个点图标 三点->更多工具,远程设备。
  • 查看屏幕底部,确保您的设备名称以绿色圆点显示在列表中。
  • 在下面的设置部分查看,检查端口转发标记
  • 添加规则。例如,如果您的python Web服务器在您的计算机localhost:5000上运行,并且您想从设备端口3333访问它,则3333在左侧键入localhost:5000,然后键入,然后单击添加规则。
  • 瞧,现在您可以从设备访问Web服务器了。尝试打开新的浏览器标签,然后从您的设备访问http:// localhost:3333

如广告所示工作。还要使设备和机器上的端口保持相同:)。(不知道为什么要使用设备上的另一个端口)
Ralf de Kleine

这应该是公认的答案。如果您对本地开发人员使用自签名证书,请记住在“新建”选项卡中添加SSL协议,例如localhost:5000。完美运作。
turrican_34

4
“不建议使用此面板,而推荐使用chrome:// inspect /#devices接口,该接口具有相同的功能。” 因此,只需粘贴chrome://inspect/#deviceschrome并跳到答案的端口转发步骤。
craastad

我只花了一个多小时试图弄清楚如何ERR_EMPTY_RESPONSE从设备上的Chrome重新获得这些说明...直到我终于意识到我没有在台式机上运行本地主机服务器并且没有任何东西可做实际连接到!h!启动服务器(在本例中为Apache),一切立即开始运行。重要的第一步是在设置端口转发之前,确保目标服务器确实正在运行。
CubicleSoft

这是最好的解决方案
Raul Quispe

16

我读过许多论坛并尝试过Play应用,但直到现在都没有找到解决方案。

我相信我的情况与您的情况相似,但我会澄清以帮助他人。我有一个本地托管的网站和网络服务,供我的android应用程序使用。我需要在仅使用笔记本电脑而没有网络连接的情况下进行演示。

注意:将我的iPhone用作wifi热点并同时连接我的PC和android设备都可以,但是iPhone 4S的连接速度很慢,并且经常掉线。

我的解决方案如下:

  • 拔下PC上的网络电缆,然后关闭wifi。
  • 在Android设备上关闭wifi
  • 通过USB将Android连接到PC
  • 在android菜单中打开“ USB Tethering”。(在网络下->更多...->网络共享和便携式热点”)
  • 获取USB系绳电缆分配的计算机IP。(打开命令提示符并键入“ ipconfig”,然后查找USB网络适配器已分配的IP)
  • 使用找到的IP地址而不是localhost打开PC上的浏览器进行测试。即http://192.168.1.1/myWebSite
  • 在android上打开浏览器并进行测试

1
我有Nexus 10,但无法使其适用于我,但我非常需要它。没有网络共享选项!?
Ludus H

我在moto g5s plus中也有问题。我分配仍然无法正常工作。
Jigar Fumakiya

5

这是我的Android应用程序的一部分代码:

该应用程序能够在服务器上运行的servlet和插入USB可调试模式的Android设备之间通过HTTP get-post模型进行通信(因为该应用程序正在开发中)。

当服务器Tomcat Apache 7运行时(当应用程序开发完成时),我还可以通过Wi-Fi运行该应用程序

在此处输入图片说明

获取您的IP地址

  1. 转到命令提示符
  2. 类型 ipconfig
  3. 点击进入

在列表中,IPv4地址 是您的IP。


这是不准确的。USB可调试模式不提供网络连接,ADB转发也不允许设备与PC联系。从外观上看,您正在使用可能由网络共享工具提供的USB网络连接,而不是USB调试。另一个选择是通过ADB转发隧道ssh。
克里斯·斯特拉顿

我并不是说USB可调试模式提供网络连接。但不幸的是,这是执行一些内部命令的唯一方法,这些命令从android应用程序项目到嵌入Android Studio的Web服务器。感谢您的关注,这使新开发人员感到困惑。在Android Studio开发进度中被编辑为应用程序。
cagcak

这里仍然没有答案,提供了一种实现该方向连接的方法。“可通过USB调试的模式”无法做到这一点,因此,如果没有准确描述您的操作方式,这里就没有解决方案
克里斯·斯特拉顿

4

我是在Windows电脑上完成此操作的,它运行完美!

在您的手机中打开USB网络共享。在计算机的命令提示符中键入ipconfig并找到用于“以太网适配器本地连接x”的ipv4(主要是第一个)。现在转到您的移动浏览器,键入该ipv4和Web应用程序的端口号。例如:-192.168.40.142:1342

只需执行这些简单步骤即可!


4

如何在实际的Android设备中轻松访问LocalHost->通过USB将PC与android设备连接

  1. 转到Chrome检查,点击“ f12”或Control + Shift + C

镀铬检查工具

  1. 检查镀铬检查工具的底部。

  2. 现在转到“远程设备”选项卡中的设置。

远程设备选项卡

  1. 检查“发现USB设备”选项以及“端口转发”选项。

  2. 现在,单击“添加规则”,输入任何设备端口,例如(4880),然后在“本地地址”中输入本例中本地主机的实际地址,例如(127.0.0.1:480)

  3. 添加规则后,转到代码URL(http://127.0.0.1:4880)中的android studio-> 。记住将端口从480-> 4880更改。

  4. 转到Chrome中的“远程设备”标签,然后单击您已连接的设备。添加新URL(127.0.0.1:4880) 检查Android设备Chrome浏览器

检查您的实际设备Chrome浏览器,然后开始在实际Android设备上调试代码。


1

检查USB连接类型选项。您应该拥有一个称为“ Internet直通”的设备。这样一来,您的手机即可使用与PC相同的连接。


这是我知道通过USB使用PC连接的唯一方法。因此,对于您的设备,我想答案是否定的。该模拟器可以工作,因为它共享您的PC的连接。
codemonkey 2012年

我知道带有Sense 3的新HTC设备可以选择(Ex the Sensation)
codemonkey 2012年

非常感谢您的帮助 。仍要检查是否有任何选项有效。
萨拉巴

1

我非常喜欢John的答案,但我想对要测试某些客户端/服务器配置的内容进行一些更改,方法是在连接USB的Mobile上运行客户端TCP,然后在本地PC上运行服务器。

首先,很明显10.0.2.2无法使用,因为它是REAL硬件移动设备,而不是模拟器。

因此,请按照约翰的指示进行:

  • 拔下PC上的所有网络电缆,然后关闭wifi。
  • 在Android设备上关闭wifi
  • 通过USB将Android设备连接到PC
  • 开启Android选单中的[USB网路共用](USB Modem / USB Cellular Modem / USB etherימושכמודםסלולרי)。(在网络下->更多...->网络共享和便携式热点”)

    • 此USB连接将充当您与单个PC连接的DHCP服务器,因此它将为您的PC在其本地USB网络中分配专用的(动态)IP。现在,您要做的就是告诉客户端应用程序该IP和端口。
  • 获取您的PC的IP(已由USB系绳电缆分配。)(打开命令提示符并键入“ ipconfig”,然后查找USB网络适配器已分配的IP,在Linuxifconfig或Ubuntu的“连接信息”等中)。 ..)

  • 告诉应用程序使用类似(Java-客户端)的方式连接到该IP(即192.168.42.87):

    String        serverIP      = "192.168.42.87";
    int           serverPort    = 5544;
    InetAddress   serverAddress = InetAddress.getByName(serverIP);
    Socket        socket         = new Socket(serverAddress, serverPort);
    ...
    

    请享用..


1

您好,您可以通过以下方式访问xampp本地主机

  1. 控制面板->
  2. Windows Defender防火墙->
  3. 高级设置(在左侧)->入站规则->新规则->端口->在特定的本地端口中写入您的Apache端口->下一步->接下来,您可以使用本地PC访问本地主机IP地址:

0

通过USB电缆连接android手机并访问计算机上的http服务器。

  1. 防火墙-将其关闭,一切正常后,您可以在“入站规则”下添加一个规则,启用Apache HTTP Server(UDP和TCP)(或您使用的任何HTTP服务器)警告-如果关闭防火墙,则计算机容易受到攻击遭受互联网攻击。因此,请先关闭互联网并断开与网络的连接。您无需连接到Internet即可工作,因为您正在连接本地网络上的两个设备。

  2. 插入USB电缆。如果弹出网络窗口,请选择“本地网络”。如果未弹出,则可能将其设置为“公共”(将不起作用),因此请转到:控制面板\网络和Internet \网络和共享中心(在win7中)并将其设置为“本地网络”。按下它以共享图片,音乐后,它可能会给您提供下一个屏幕...只需单击取消就可以了。在主屏幕上,“家庭网络”仍将处于活动状态。

  3. 您需要计算机的IP,本地主机或其他别名不起作用。要获取计算机的IP,请启动Windows命令行外壳程序(按Windows键+ R并键入cmd),黑色命令提示符窗口应弹出,键入:“ ipconfig”并按Enter键。现在寻找

IPv4地址。。。。。。。。。。。:192.168。###。###这是电话分配给计算机的IP

  1. 现在您应该已经完成​​了,在手机的浏览器中,尝试从计算机的服务器访问测试html文件,它应该可以正常显示。

  2. 现在一切正常,您可能需要在计算机上启用防火墙和Internet访问。现在,尝试再次访问您的http服务器。它可能行不通。根据您的设置,您可能会看到一个弹出窗口,要求您添加允许它的规则,但是如果您不这样做,请自己添加。启动Windows防火墙并转到“入站规则”(因为它是服务器)并添加“新规则”。选择“程序”。找到您的http服务器的exe,然后在下一个屏幕中确保选中“允许”。尝试重新连接,现在应该可以了。如果不是,则可能是因为您选择了错误的exe。您甚至可以更高级地限制外部使用(因为现在互联网上的每个人都有您的Internet IP地址都可以访问它)要限制访问,您可以右键点击刚创建的新规则,

    对于Android开发人员,请注意,现在在您的android代码中,您必须使用“ http://”,否则它将无法正常工作。例如:MyAsyncTask.execute(“ http://192.168.123.123/test.html”)

第二部分-将IP设置为固定/静态。

现在一切正常,每次拔下电缆再重新插入,您的IP都会改变。而且,如果您在代码内部的某个地方使用它,则每次都必须对其进行更新!我想出的解决方案是将IP设置为静态。

  1. 将电话连接和系好后,返回到网络和共享中心,然后单击本地连接“连接:”

屏幕截图

  1. 在下一个屏幕上,选择“属性”,然后突出显示IP 4并在此处按属性,然后单击“使用以下IP地址”
  2. 将“默认网关和子网掩码”准确地放在ipconfig中,对于IP地址,仅将最后3位更改为1到255之间的任何数字

屏幕截图

该IP将是您的新固定/静态IP,并且在您下次插入电话时保持不变。


0
  1. 确保在计算机上安装了adb在电话上启用了USB调试,并且电话已允许访问计算机。通过USB电缆将手机插入计算机,并确保手机可见(它应显示在Bash命令中)adb devices
  2. 在您计算机的Chrome浏览器中,打开chrome:// inspect /#devices,单击“端口转发”按钮,选中“启用端口转发”,然后在您希望通过电话访问的计算机上添加端口(详细说明在这里)。您需要继续打开运行chrome:// inspect /#devices的标签。
  3. 在手机的浏览器中,导航到localhost:[port_number],它应该显示计算机上正在运行的内容。

这适用于Windows和Ubuntu Linux,也适用于Mac。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.