从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)的端口。 我做了什么:
- 首先用USB线连接你的真实设备(确保你可以在你的设备上上传应用)
- 从您连接的设备获取IP地址,以192.168.xx:端口开头
- 打开“networking和共享中心”
- 点击设备上的“本地连接”,然后select“详细信息”
- 将“IPv4地址”复制到您的应用程序,并将其replace为:
http://192.168.xx:port/test.php
- 上传你的应用程序(再次)到您的真实设备
- 去属性,并打开“USB tethering”
- 在设备上运行您的应用程序
它现在应该工作。
我已经阅读了许多论坛,并尝试玩应用程序,但直到现在还没有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地址
- 转到命令提示符
- inputipconfig
在列表中,“ IPv4地址”代表您的IP。
我在一台Windows电脑上做了这个,它完美的工作!
在手机中打开USB共享。 在计算机的命令提示符下键入ipconfig,find“以太网适配器本地连接x”(主要是第一个)的ipv4现在转到您的移动浏览器,input您的web应用程序的端口号ipv4。 例如: – 192.168.40.142:1342
它与这些简单的步骤一起工作!
检查USB连接types选项。 你应该有一个叫“互联网传递”。 这将使您的手机使用与PC相同的连接。
通过USB电缆连接android手机并访问计算机上的http服务器。
- 防火墙 – 将其closures,一切正常后,您可以在入站规则下添加规则,启用Apache HTTP Server(UDP和TCP)(或者您正在使用的任何HTTP服务器) 警告 – 如果closures防火墙,到互联网攻击。 所以先关掉networking然后断开networking连接。
- 插入USB电缆。 如果networking窗口popup,请select家庭networking。 如果没有popup它可能设置为公共(这将不起作用),所以去:控制面板\networking和互联网\networking和共享中心(在WIN7中),并将其设置为家庭networking那里。 它可能会给你下一个屏幕后,你分享图片,音乐…只需点击取消就可以了。 在主屏幕上,家庭networking仍然处于活动状态。
- 您需要计算机的IP,本地主机或其他别名不起作用。 要获得IP,请在Windows的命令提示符下键入ipconfig并查找IPv4地址。 。 。 。 。 。 。 。 。 。 。 :192.168。###。###这是你的手机给你的电脑的IP
-
现在你应该做的,在手机的浏览器,尝试从您的计算机的服务器访问testingHTML文件,它应该显示正常。
对于Android开发者来说,现在在你的android代码中,你必须使用“http://”,否则它将无法工作。 例如:MyAsyncTask.execute(“http://192.168.123.123/test.html”);
第二部分 – 将IP设置为固定/静态。
现在情况起作用了,每当你拔掉电缆并重新插入时,你的IP就会改变。 如果你在代码里面使用它,你必须每次更新它! 我想到的解决scheme是将IP设置为静态。
- 让手机连接并连线,返回networking和共享中心,点击本地连接“连接”:
- 在下一个屏幕上select属性,然后突出显示IP 4,然后按属性,然后单击“使用下面的IP地址”
- 将默认网关和子网掩码完全按照它在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); ...
请享用..
- Android – TimePicker分钟到15
- 以编程方式closuresAndroid手机
- 无法加载模块描述符类:未find类“com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor”
- 安装Android Studio后找不到adb.exe
- Android Studio布局预览在哪里?
- 如何将currentTimeMillis转换为可读的date格式?
- Android Studio无法识别我的设备
- 我在哪里可以放置在Android Studio中的“资产”文件夹?
- 相当于push()或pop()的数组?