我把ddms的代码拿来研究了,发现是在建立通道的时候出的错,也就是说。通过usb线连接手机的时候,pc端会开一个很大的端口来和手机的5037端口连接。但是如果是手机应用程序连接5037端口时,就会出错。不明白为什么。socketchannel.

解决方案 »

  1.   

    android 如何与手机端口通讯纳
      

  2.   

    直接socket通讯,你试试了。 adbd本身就是一个socket服务器
      

  3.   

    socket是可以连通的,也可以write,但是却无法收到消息。
    发送的消息也是符合他们之间的协议的。
    并且,我使用java程序在pc连手机端口,是可以进行收发通讯的。
    但是在android应用里面连手机端口,却无法收到讯息。
    他们之间的实现机制是一样的(java程序和应用程序)说白了,我就是想做个在手机上能和adbd通讯的客户端。
    忘大虾们不吝赐教啊5555
      

  4.   

    收不到数据,你的通讯协议不对吧,adbd的协议都是,4个字节的,比如成功是OKAY
      

  5.   

    通讯格式我使用java程序连接adbd的时候可以收到讯息的,后来我查阅了资料,总算把这个弄明白了
    其实区别在于,用java程序连接手机的时候,系统是开启了一个adb的客户端,而这个客户端就是起一个驱动作用,建立一个与手机端能够通过usb数据线进行通讯的通道,然后java程序才能与手机端进行通讯。(这个观点的证明方式,就是你把你pc上的adb进程杀掉之后,ddms是连不上的)
    然而手机上是没有这个客户端的,所以就没有通道,socket也就没有通讯通道,所以才收不到