ChatGPT解决这个技术问题 Extra ChatGPT

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

我有一个通过 USB 连接到我的 PC 的 android 设备(Samsung Galaxy 选项卡)。

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

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

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

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

请使用以下链接 stackoverflow.com/questions/4779963/… 它对我有用。
在测试您的网页时关闭防火墙或在防火墙设置中将您的 ip 添加到受信任的网络中。
查看此博客 mycodingchannel.in/blog/… 了解详细信息

A
Alfat Saputra Harun

Google 针对此类问题发布了解决方案here

步骤:

在启用 USB 调试的情况下连接您的 Android 设备和开发机器

在你的开发机器中打开Chrome,打开新标签页,在新的浏览器标签页中右击,点击检查

单击右上角的三个点图标,-> 更多工具,远程设备。

查看屏幕底部,确保您的设备名称以绿色圆点出现在列表中。

看下面的设置部分,检查端口转发标记

添加规则。例如,如果您的 python Web 服务器在您的机器 localhost:5000 上运行,并且您想从设备端口 3333 访问它,则在左侧键入 3333,然后键入 localhost:5000,然后单击添加规则。

瞧,现在您可以从您的设备访问您的网络服务器。尝试打开新的浏览器选项卡,然后从您的设备访问 http://localhost:3333


像宣传的那样工作。也可以保持设备和机器上的端口相同:)。 (不知道为什么要使用设备上的另一个端口)
这应该是公认的答案。如果您为本地开发人员使用自签名证书,请记住在新选项卡中添加 SSL 协议,例如 localhost:5000。它完美地工作。
“该面板已被弃用,取而代之的是具有同等功能的 chrome://inspect/#devices 界面。” 因此,只需将 chrome://inspect/#devices 粘贴到 chrome 中并跳至 端口转发 步骤的答案。
我只花了一个多小时试图弄清楚如何让这些说明与从设备上的 Chrome 返回的 ERR_EMPTY_RESPONSE 一起工作......直到我终于意识到我没有在我的桌面上运行我的本地主机服务器并且那里没有什么可以真正连接到的!嗬!启动服务器(在本例中为 Apache),一切都立即开始运行。重要的第一步是在设置端口转发之前确保您的目标服务器实际运行。
正确的答案是端口转发。通常你会在你的防火墙中设置它——要么使用配置文本文件,要么使用诸如 Icefloor 之类的应用程序。但是对于不经常处理防火墙配置的人来说,这个过程可能会有点麻烦。因此,Chrome 开发工具提供了一种使用简单 GUI 进行设置的简单方法。几年前,我在另一台机器上手动设置了端口转发,但我仍然懒得重新做一遍。
C
Community

我终于解决了这个问题。我将三星 Galaxy S 与 Froyo 一起使用。下面的“端口”与您用于模拟器的端口相同(10.0.2.2:端口)。我做了什么:

首先用USB线连接你的真实设备(确保你可以在你的设备上上传应用程序)从你连接的设备获取IP地址,以192.168.xx开头:端口打开“网络和共享中心”点击从设备中选择“本地连接”并选择“详细信息”将“IPv4 地址”复制到您的应用程序并将其替换为:http://192.168.xx:port/test.php 将您的应用程序(再次)上传到您的真实设备转到属性并打开“USB tethering”在设备上运行您的应用程序

它现在应该可以工作了。


如果我这样做,我会得到一个未知的主机异常。
似乎这个答案虽然有效,但假设 Android 设备和计算机都连接到无线接入点,这与作者试图实现的目标相反。
应该注意的是,这是一个仅限 Windows 的解决方案。
我同意@Jacob,这不能回答问题。问题本身表明他可以通过 wifi 连接。
这没有回答问题。这是正确的答案:stackoverflow.com/a/53920173/2947592
J
John

我已经阅读了许多论坛并尝试了播放应用程序,但直到现在还没有找到解决方案。

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

注意:使用我的 iPhone 作为 wifi 热点并连接我的电脑和我的 android 设备工作正常,但 iPhone 4S 连接速度很慢并且经常掉线。

我的解决方案如下:

拔下PC上的网线并关闭wifi。

关闭安卓设备上的wifi

通过 USB 将安卓连接到电脑

在 android 菜单中打开“USB Tethering”。 (在网络下->更多...->网络共享和便携式热点”)

获取已由 USB 系绳电缆分配的计算机 IP。 (打开命令提示符并输入“ipconfig”然后查找 USB 网络适配器分配的 IP)

使用找到的 IP 地址而不是 localhost 打开 PC 上的浏览器进行测试。即http://192.168.1.1/myWebSite

在android上打开浏览器并测试它是否有效


我有 Nexus 10,但我无法让它为我工作,但我非常需要它。没有网络共享选项!?
我的moto g5s plus也有问题。我分配的仍然不行。
B
Binu Jasim

我在 Windows 电脑上做了这个,效果很好!

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

它与这些简单的步骤一起工作!


G
Grammargeek

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

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

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

https://i.stack.imgur.com/oGz1I.png

获取你的IP地址

转到命令提示符类型 ipconfig 按回车键

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


这是不准确的。 USB 可调试模式不提供网络连接,ADB 转发也不会允许设备与 PC 联系。从外观上看,您正在使用可能由网络共享工具提供的 USB 网络连接,而不是 USB 调试。另一种选择是通过 ADB 转发隧道 ssh。
我并不是说 USB 可调试模式提供网络连接。但不幸的是,这是执行从 android 应用项目到嵌入到 Android Studio 的 Web 服务器的一些内部命令的唯一方法。感谢您的关注,新开发人员可能会感到困惑。编辑为Android Studio中开发进度的应用程序。
这里仍然没有答案,提供了一种方法来实现这个方向的连接。 “USB-debuggable 模式”不能做到这一点,所以如果没有准确描述你是如何做到的,这里就没有解决方案。
k
kader hussain

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

转到 Chrome 检查单击“f12”或 Control+Shift+C

Chrome Inspection tool

检查镀铬检查工具的底部。现在转到远程设备选项卡中的设置。

Remote Devices Tab

检查“发现 USB 设备”选项以及检查“端口转发”选项。现在单击添加规则,输入任何设备端口,例如(4880)并在本地地址中输入本地主机的实际地址,在我的情况下,例如(127.0.0.1:480)添加规则后转到您的android工作室->在您的内部代码网址(http://127.0.0.1:4880)。请记住将端口从 480 -> 4880 更改。转到 Chrome 中的远程设备选项卡,然后单击您连接的设备。添加新 URL(127.0.0.1:4880) 检查 Android 设备 Chrome 浏览器

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


J
Josh

确保电脑上安装了adb,手机开启USB调试,手机允许访问电脑。通过 USB 线将手机插入计算机,并确保它可见(它应该显示在 Bash 命令 adb devices 中。在计算机的 Chrome 浏览器中,打开 chrome://inspect/#devices,单击“端口转发”按钮,选中“启用端口转发”,然后在计算机上添加您希望通过手机访问的端口(此处有详细说明)。您需要保持打开运行 chrome://inspect/#devices 的选项卡。在你的手机浏览器,导航到 localhost:[port_number],它应该会显示计算机上正在运行的任何内容。

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


c
codemonkey

检查 USB 连接类型选项。你应该有一个叫做“Internet pass through”。这将使您的手机使用与 PC 相同的连接。


这是我所知道的通过 USB 使用 PC 连接的唯一方法。因此,对于您的设备,我想答案是否定的。模拟器之所以有效,是因为它共享您的 PC 连接。
我知道带有 Sense 3 的新 HTC 设备可以选择(Ex the Sensation)
非常感谢您的帮助 。仍然要检查任何选项是否有效。
J
JamesC

我非常喜欢 John 的回答,但我想通过在 USB 连接的移动设备上运行客户端 TCP 和在本地 PC 上的服务器上运行客户端 TCP 来测试一些客户端//服务器配置的用户。

首先,很明显 10.0.2.2 无法运行,因为这是一款真正的硬件手机,而不是模拟器。

所以按照约翰的指示:

拔掉PC上的所有网线并关闭wifi。

关闭安卓设备上的wifi

通过 USB 将安卓设备连接到电脑

在安卓菜单中打开“USB 网络共享”(USB 调制解调器/USB 蜂窝调制解调器/USB שימוש כמודם סלולרי)。 (在网络下->更多...->网络共享和便携式热点”)此 USB 连接将充当您单个 PC 连接的 DHCP 服务器,因此它将在其本地 USB 网络中为您的 PC 分配一个专用(动态)IP . 现在你要做的就是告诉客户端应用这个IP和端口。

此 USB 连接将充当您单个 PC 连接的 DHCP 服务器,因此它将在其本地 USB 网络中为您的 PC 分配一个专用(动态)IP。现在您所要做的就是告诉客户端应用程序这个 IP 和端口。

获取您 PC 的 IP(已由 USB 系绳分配。)(打开命令提示符并键入“ipconfig”,然后查找 USB 网络适配器分配的 IP,在 Linux 中为 ifconfig 或 Ubuntu 的“连接信息” ETC..)

告诉应用程序使用类似(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); ... 享受..


s
slfan

您好,您可以通过以下方式访问您的 xampp localhost

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


S
Saurav Rao

Zsivics Sanel 的 answer above 可以很好地用于 USB 调试,但如果您想访问设备上的本地主机以进行 Wifi ADB,您可以使用命令 adb reverse tcp:port tcp:port 并使用 android 上的链接 http://localhost:port/ 来访问http://localhost:port/ 您的电脑。

这也适用于 USB 调试 :)

带有解释的详细答案是here


C
Community

通过 USB 数据线连接安卓手机并访问计算机上的 http 服务器。

防火墙 - 将其关闭,一旦一切正常,您可以在入站规则下添加规则,启用 Apache HTTP 服务器(UDP 和 TCP)(或您正在使用的任何 HTTP 服务器)警告 - 如果您关闭防火墙,您的计算机将变得容易受到攻击到互联网攻击。因此,请先关闭互联网并断开网络连接。您无需在 Internet 上即可工作,因为您正在本地网络上连接两台设备。插入 USB 电缆。如果弹出网络窗口,请选择家庭网络。如果它没有弹出它可能设置为公共(这不起作用),所以转到:控制面板\网络和Internet\网络和共享中心(在win7中)并将其设置为家庭网络。在您按下它以共享图片、音乐后,它可能会给您下一个屏幕……只需单击取消即可。在主屏幕上,家庭网络仍将处于活动状态。您需要计算机的 IP、localhost 或其他别名不起作用。要获取您机器的 IP,请启动 Windows 命令行 shell(按 Windows 键 + R 并键入 cmd),应弹出黑色命令提示符窗口,键入:“ipconfig”并回车。现在寻找

IPv4 地址。 . . . . . . . . . . : 192.168.###.### 那是你的手机分配给你电脑的IP

现在您应该完成了,在手机的浏览器中,尝试从您的计算机服务器访问一个测试 html 文件,它应该可以正常显示。现在一切正常,您可能需要在您的计算机上启用防火墙和 Internet 访问。现在尝试再次访问您的 http 服务器。它可能行不通。根据您的设置,您可能会收到一个弹出窗口,要求您添加规则以允许它,但如果您不这样做,请自行添加。启动 windows 防火墙并转到入站规则(因为它是服务器)并添加新规则。选择“程序”。找到您的 http 服务器的 exe,并在下一个屏幕中确保选择了允许。再次尝试连接,现在它应该可以工作了。如果不是,可能是因为您选择了错误的 exe。您甚至可以更高级地限制外部使用(因为现在互联网上的每个人都可以访问它,如果他们有您的 Internet IP 地址)要限制访问,您可以右键单击刚刚创建的新规则,单击属性,然后转到范围选项卡并相应地更改那里的内容。 Android 开发者请注意,现在在您的 android 代码中,您必须使用“http://”,否则将无法正常工作。例如:MyAsyncTask.execute("http://192.168.123.123/test.html")

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

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

将手机连接并绑定后,返回网络和共享中心并单击本地连接“连接:”

https://i.stack.imgur.com/oEsHo.jpg

在下一个屏幕上选择属性,然后突出显示 IP 4 并在那里按属性,然后单击“使用以下 IP 地址” 将默认网关和子网掩码与 ipconfig 中的完全相同,对于 IP 地址,只需更改最后 3 位数字从 1 到 255 的任何值

https://i.stack.imgur.com/mUSx1.jpg

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


S
Stav Bodik

我面临的问题也许对某人有帮助,我工作了很长时间,我的电脑和安卓设备连接到同一个 WiFi 网络,而安卓设备通过打开端口 8080 的电脑的 IPV4 地址连接到防火墙。

一天:我安装了 Genymotion 模拟器,以便在不同的屏幕上调试 UI。感谢 Genymotion/Virtualbox 网络配置,它毁了我的 WiFi 适配器。

修复方法是重新配置 WiFi 网络适配器上的 IPV4/TCP 设置:

https://i.stack.imgur.com/pVO79.png