利用ddmlib 实现 PC端与android手机端adb forword socket通信

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

 

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

 

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

 

Java代码   收藏代码
  1. ServerSocket serverSocket = new ServerSocket(SOCKET_PORT);  

 

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

 

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

Html代码   收藏代码
  1. adb forward <local> <remote> - forward socket connections  
  2.                                forward specs are one of:  
  3.                                  tcp:<port>  
  4.                                  localabstract:<unix domain socket name>  
  5.                                  localreserved:<unix domain socket name>  
  6.                                  localfilesystem:<unix domain socket name>  
  7.                                  dev:<character device name>  
  8.                                  jdwp:<process pid> (remote only)  

 使用如下:

 

adb forward tcp:Local_Port tcp:Remote_Port

 

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

 

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

Java代码   收藏代码
  1. String adb_path=....;  
  2.   
  3. Runtime.getRuntime().exec(adb_path + " forward tcp:LocalPort tcp:Remote_Port");  
  4.   
  5. Socket socket = new Socket("localhost", Local_Port);  

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

Java代码   收藏代码
  1. <uses-permission android:name="android.permission.INTERNET" />  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值