`
liugang594
  • 浏览: 978047 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 与 PC 之间的通信

阅读更多

当PC与手机连通时,我们可以通过Socket连接来实现PC与手机间的通信。

 

这里我们先讨论手机做为Server端、PC做为Client端的情况。

 

和其他Java Socket程序一样,只需要定义一个SocketServer即可实现Server端的监听,如下:

 

ServerSocket serverSocket = new ServerSocket(SOCKET_PORT);

 

写Java Socket的时候,我们都知道,要连上这个Server,只需要知道Server的IP地址和Port号就可以了。这里因为手机是和PC相连的,因此麻烦就在于怎么定位这个IP地址和Port号。

 

IP地址其实也就是本机地址,而port号则需要有一点点技巧,需要用到adb工具。查看adb帮助中,有一条forward命令可以用于完全任务:

  adb forward <local> <remote> - forward socket connections
                                 forward specs are one of:
                                   tcp:<port>
                                   localabstract:<unix domain socket name>
                                   localreserved:<unix domain socket name>
                                   localfilesystem:<unix domain socket name>
                                   dev:<character device name>
                                   jdwp:<process pid> (remote only)

 使用如下:

 

adb forward tcp:Local_Port tcp:Remote_Port

 

也即将本地的Local_Port端口,映射为Remote_Port端口,这里的Remote_Port即为上面的SOCKET_PORT。

 

所以Client代码可以如下实现:

		String adb_path=....;

		Runtime.getRuntime().exec(adb_path + " forward tcp:LocalPort tcp:Remote_Port");

		Socket socket = new Socket("localhost", Local_Port);

即可实现PC与Android之间的通信。这里注意Android端需要有网络访问的权限:

	<uses-permission android:name="android.permission.INTERNET" />

 

分享到:
评论
1 楼 lenomon 2012-03-14  

相关推荐

Global site tag (gtag.js) - Google Analytics