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

我有一个Android设备(三星Galaxy Tab)通过USB连接到我的电脑。

我想使用Web服务,并运行我的Android设备上我的电脑上的本地xampp服务器上的网页。

我可以实现它,如果我有两个,我的电脑和Android设备,连接在同一个无线networking。

但是,只有使用USB连接,才可以在没有任何无线连接的情况下访问本地主机页面。

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

我终于解决了这个问题。 我用三星Galaxy S与Froyo。 下面的“端口”是你用于模拟器(10.0.2.2:port)的端口。 我做了什么:

  1. 首先用USB线连接你的真实设备(确保你可以在你的设备上上传应用)
  2. 从您连接的设备获取IP地址,以192.168.xx:端口开头
  3. 打开“networking和共享中心”
  4. 点击设备上的“本地连接”,然后select“详细信息”
  5. 将“IPv4地址”复制到您的应用程序,并将其replace为: http://192.168.xx:port/test.php
  6. 上传你的应用程序(再次)到您的真实设备
  7. 去属性,并打开“USB tethering”
  8. 在设备上运行您的应用程序

它现在应该工作。

我已经阅读了许多论坛,并尝试玩应用程序,但直到现在还没有find解决scheme。

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

注:使用我的iPhone作为一个WiFi热点,并连接我的电脑和我的Android设备工作,但iPhone 4S连接速度缓慢,并经常退出。

我的解决scheme如下:

  • 拔下PC上的网线并closureswifi。
  • 在Android设备上closureswifi
  • 通过USB连接android到电脑
  • 在android菜单中打开“USB Tethering”。 (在networking – >更多…->绑定和便携式热点)
  • 获取由USB系绳电缆分配的计算机的IP地址。 (打开命令提示符并键入“ipconfig”,然后查找USBnetworking适配器分配的IP)
  • 使用find的IP地址而不是本地主机来打开PC上的浏览器进行testing。 即http://192.168.1.1/myWebSite
  • 在android上打开浏览器并testing它的工作

这是我的一个Andorid应用程序的代码:

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

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

在这里输入图像说明

获取你的IP地址

  1. 转到命令提示符
  2. inputipconfig

在列表中,“ IPv4地址”代表您的IP。

我在一台Windows电脑上做了这个,它完美的工作!

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

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

检查USB连接types选项。 你应该有一个叫“互联网传递”。 这将使您的手机使用与PC相同的连接。

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

  1. 防火墙 – 将其closures,一切正常后,您可以在入站规则下添加规则,启用Apache HTTP Server(UDP和TCP)(或者您正在使用的任何HTTP服务器) 警告 – 如果closures防火墙,到互联网攻击。 所以先关掉networking然后断开networking连接。
  2. 插入USB电缆。 如果networking窗口popup,请select家庭networking。 如果没有popup它可能设置为公共(这将不起作用),所以去:控制面板\networking和互联网\networking和共享中心(在WIN7中),并将其设置为家庭networking那里。 它可能会给你下一个屏幕后,你分享图片,音乐…只需点击取消就可以了。 在主屏幕上,家庭networking仍然处于活动状态。
  3. 您需要计算机的IP,本地主机或其他别名不起作用。 要获得IP,请在Windows的命令提示符下键入ipconfig并查找IPv4地址。 。 。 。 。 。 。 。 。 。 。 :192.168。###。###这是你的手机给你的电脑的IP
  4. 现在你应该做的,在手机的浏览器,尝试从您的计算机的服务器访问testingHTML文件,它应该显示正常。

    对于Android开发者来说,现在在你的android代码中,你必须使用“http://”,否则它将无法工作。 例如:MyAsyncTask.execute(“http://192.168.123.123/test.html”);

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

现在情况起作用了,每当你拔掉电缆并重新插入时,你的IP就会改变。 如果你在代码里面使用它,你必须每次更新它! 我想到的解决scheme是将IP设置为静态。

  1. 让手机连接并连线,返回networking和共享中心,点击本地连接“连接”:

截图

  1. 在下一个屏幕上select属性,然后突出显示IP 4,然后按属性,然后单击“使用下面的IP地址”
  2. 将默认网关和子网掩码完全按照它在ipconfig中的设置,对于IP地址,只将最后3位数字更改为1到255之间的任何值

截图

该IP将成为您的新的固定/静态IP,并且在您下次连接电话时将保持不变。

我非常喜欢John的答案,但是我希望通过在连接了USB的Mobile和本地PC上的服务器上运行客户端TCP,对那些想要testing某些客户端/服务器configuration的人进行一些更改。

首先很显然的是,10.0.2.2将不起作用,因为这是一个真正的硬件移动设备,而不是一个模拟器。

所以遵循约翰的指示:

  • 拔下PC上的所有networking电缆,并closuresWiFi。
  • 在Android设备上closureswifi
  • 通过USB连接Android设备到电脑
  • 打开android菜单中的“USB Tethering”(USB调制解调器/ USB蜂窝调制解调器/ USB智能手机)。 (在networking – >更多…->绑定和便携式热点)

    • 这个USB连接将作为一个DHCP服务器为您的单个PC连接,所以它会分配您的PC在其本地USBnetworking专用(dynamic)的IP。 现在你所要做的就是告诉客户端应用程序这个IP和端口。
  • (打开命令提示符并键入“ipconfig”,然后查找USBnetworking适配器已分配的IP,在Linux中其ifconfig或Ubuntu的“连接信息”等等..)

  • 告诉应用程序连接到这个IP(即192.168.42.87)像(Java – 客户端)的东西:

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

    请享用..