我有一个通过 USB 连接到我的 PC 的 android 设备(Samsung Galaxy 选项卡)。
我想使用 WebServices 并运行一个网页,该网页位于我的 android 设备上我的 PC 的本地 xampp 服务器上。
如果我的 PC 和 android 设备都连接在同一个无线网络上,我可以实现它。
但是,是否可以在没有任何无线连接的情况下仅使用 USB 连接来访问 localhost 页面。
(PS:当我在模拟器上运行应用程序并使用 ip 10.0.2.2 访问我的 PC 上的本地主机时,同样的情况也适用)
Google 针对此类问题发布了解决方案here。
步骤:
在启用 USB 调试的情况下连接您的 Android 设备和开发机器
在你的开发机器中打开Chrome,打开新标签页,在新的浏览器标签页中右击,点击检查
单击右上角的三个点图标,-> 更多工具,远程设备。
查看屏幕底部,确保您的设备名称以绿色圆点出现在列表中。
看下面的设置部分,检查端口转发标记
添加规则。例如,如果您的 python Web 服务器在您的机器 localhost:5000 上运行,并且您想从设备端口 3333 访问它,则在左侧键入 3333,然后键入 localhost:5000,然后单击添加规则。
瞧,现在您可以从您的设备访问您的网络服务器。尝试打开新的浏览器选项卡,然后从您的设备访问 http://localhost:3333
我终于解决了这个问题。我将三星 Galaxy S 与 Froyo 一起使用。下面的“端口”与您用于模拟器的端口相同(10.0.2.2:端口)。我做了什么:
首先用USB线连接你的真实设备(确保你可以在你的设备上上传应用程序)从你连接的设备获取IP地址,以192.168.xx开头:端口打开“网络和共享中心”点击从设备中选择“本地连接”并选择“详细信息”将“IPv4 地址”复制到您的应用程序并将其替换为:http://192.168.xx:port/test.php 将您的应用程序(再次)上传到您的真实设备转到属性并打开“USB tethering”在设备上运行您的应用程序
它现在应该可以工作了。
我已经阅读了许多论坛并尝试了播放应用程序,但直到现在还没有找到解决方案。
我相信我的情况与您的情况相似,但我会澄清以帮助其他人。我有一个本地托管的网站和 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上打开浏览器并测试它是否有效
我在 Windows 电脑上做了这个,效果很好!
在您的手机中打开 USB Tethering。在计算机的命令提示符下键入 ipconfig 并找到“以太网适配器本地连接 x”的 ipv4(主要是第一个) 现在转到您的移动浏览器,键入带有 Web 应用程序端口号的 ipv4。例如:- 192.168.40.142:1342
它与这些简单的步骤一起工作!
这是我的 Android 应用程序的一段代码:
此应用程序能够与运行在服务器上的 servlet 和插入 USB 可调试模式的 Android 设备之间的 HTTP get-post 模型进行通信(因为该应用程序正在开发中)。
当服务器 Tomcat Apache 7 运行时(应用程序开发完成后),我也可以通过 Wi-Fi 运行应用程序。
https://i.stack.imgur.com/oGz1I.png
获取你的IP地址
转到命令提示符类型 ipconfig 按回车键
在列表中,IPv4 地址是您的 IP。
如何在实际的 Android 设备中轻松访问 LocalHost -> 通过 USB 将您的电脑与 android 设备连接
转到 Chrome 检查单击“f12”或 Control+Shift+C
检查镀铬检查工具的底部。现在转到远程设备选项卡中的设置。
检查“发现 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 设备上调试代码。
确保电脑上安装了adb,手机开启USB调试,手机允许访问电脑。通过 USB 线将手机插入计算机,并确保它可见(它应该显示在 Bash 命令 adb devices 中。在计算机的 Chrome 浏览器中,打开 chrome://inspect/#devices,单击“端口转发”按钮,选中“启用端口转发”,然后在计算机上添加您希望通过手机访问的端口(此处有详细说明)。您需要保持打开运行 chrome://inspect/#devices 的选项卡。在你的手机浏览器,导航到 localhost:[port_number],它应该会显示计算机上正在运行的任何内容。
这适用于 Windows 和 Ubuntu Linux,也应该适用于 Mac。
检查 USB 连接类型选项。你应该有一个叫做“Internet pass through”。这将使您的手机使用与 PC 相同的连接。
我非常喜欢 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); ... 享受..
您好,您可以通过以下方式访问您的 xampp localhost
控制面板 --> windows defender 防火墙 --> 高级设置(左侧) --> 入站规则 --> 新规则 --> 端口 --> 在特定的本地端口中写入您的 Apache 端口 --> 下一步 -->接下来,您可以使用本地 PC IP 地址访问您的本地主机:
Zsivics Sanel 的 answer above 可以很好地用于 USB 调试,但如果您想访问设备上的本地主机以进行 Wifi ADB,您可以使用命令 adb reverse tcp:port tcp:port
并使用 android 上的链接 http://localhost:port/
来访问http://localhost:port/
您的电脑。
这也适用于 USB 调试 :)
带有解释的详细答案是here。
通过 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,并且在您下次插入电话时将保持不变。
我面临的问题也许对某人有帮助,我工作了很长时间,我的电脑和安卓设备连接到同一个 WiFi 网络,而安卓设备通过打开端口 8080 的电脑的 IPV4 地址连接到防火墙。
一天:我安装了 Genymotion 模拟器,以便在不同的屏幕上调试 UI。感谢 Genymotion/Virtualbox 网络配置,它毁了我的 WiFi 适配器。
修复方法是重新配置 WiFi 网络适配器上的 IPV4/TCP 设置:
https://i.stack.imgur.com/pVO79.png
chrome://inspect/#devices
粘贴到 chrome 中并跳至 端口转发 步骤的答案。ERR_EMPTY_RESPONSE
一起工作......直到我终于意识到我没有在我的桌面上运行我的本地主机服务器并且那里没有什么可以真正连接到的!嗬!启动服务器(在本例中为 Apache),一切都立即开始运行。重要的第一步是在设置端口转发之前确保您的目标服务器实际运行。