PC上有一个服务,持续的监听本机的6000端口(0.0.0.0:6000)。 Android设备是一块MOTO XOOM的板子,装的是android3.0的系统。在板子上装了一个AP,这个AP包含一个service。service在启动后,每3秒尝试连接127.0.0.1:6000试图与PC建立socket连接。。
在模拟器上尝试过,AP可以成功地连接10.0.0.2:6000可以与服务器建立连接,说明代码应该没什么问题。
现在adb也可以检测到XOOM,运行adb命令也都成功了。
所以我想问的是,Android端做客户端与PC实现socket通信有什么要注意的?需要使用adb forward命令嘛?android端的AP应该尝试连接什么IP,我使用127.0.0.1和PC的内网IP都没能连接上。
在模拟器上尝试过,AP可以成功地连接10.0.0.2:6000可以与服务器建立连接,说明代码应该没什么问题。
现在adb也可以检测到XOOM,运行adb命令也都成功了。
所以我想问的是,Android端做客户端与PC实现socket通信有什么要注意的?需要使用adb forward命令嘛?android端的AP应该尝试连接什么IP,我使用127.0.0.1和PC的内网IP都没能连接上。
在PC端已经绑定了监听端口的情况下,adb forward命令根本无法执行成功。
那样的话,android端的AP试图去连接PC上的服务时,它应该如何指定连接的端口呢?通过USB连接到PC的情况下,Android端和PC端是共享同一个IP还是使用不同的IP的?
如果服务器端在Android设备上,那么通过adb的端口转发命令就可以实现PC与Android设备的socket通信。
而如果服务器端在PC上,那么由于Android设备访问不了PC(它们之间没有HDCP服务器),所以无法实现。但是如果通过安装一个额外的驱动(驱动的名字忘记了,把板子插在电脑上,使用win7的update功能更新就OK了),可以使android设备虚拟为PC的网卡,而使android设备作为HDCP服务器,这时,PC和Android设备之间就可以自由的通过socket进行通信了。
也谢谢各位的大力帮助!
如果是PC端作为服务器,那你就得用RNDIS驱动了,加了驱动以后,android设备和PC之间会有一个新的局域网存在,使用这个网络中的IP就可以了。
10.0.0.2这个端口仅限模拟器使用,真机无效的。
如果是考虑流量的问题的话,使用USB连接,本身就是不需要流量的,因为不访问外网嘛。
使用wifi局域网的话,也不会使用android手机的流量啊