最近在研究类似于 豌豆荚 的PC客户端,实验一对多并能和连接的每一个android机器实时通讯
在查阅了大量资料和尝试制作各种Demo程序测试之后,发现一些问题,大家一起讨论
实现方式1 只是用adb命令
这种方式就是直接发adb命令给android,获取想获取的文件,查看想查看的内容。缺点是不能实现android机器向客户端主动上报信息,只能客户端主动去轮询各个android机器
实现方式2 用socket通信,并结合adb命令
研究这种方式花了最久的时间,一般来讲TCP socket通信主要是两种方式
1 android作server ,PC客户端作client。
网上有大量的资料是这种方式实现的,c++ ,java的代码都有,关键是要用 adb forward tcp:xxx tcp:xxx 这个命令把PC端口的所有数据映射到android机器上。这种方式在一台PC客户端与一台android连上之后可以进行实时通讯,但是只能实现一对一的通信,无法实现一对多(demo没实现),即使能实现一对多,第二台连上还是没连上的状态应该是假的,需要android机器回复应答才算成功。
2 android 作client ,PC客户端作server
同样要用 adb forward tcp:xxx tcp:xxx 这个命令,这种方式无法连接,pc客户端端accept()一直在等待,android用socket(ip,port),connect()都无法连接上pc客户端。
主要原因是adb forward这个命令造成的。这个命令干了什么?我查到的资料貌似是这个命令在android端创建了服务等待PC端进行连接,多以android用socket(ip,port),connect()是无论如何都无法建立socket连接的
那到底类似 豌豆荚 的PC客户端 到底是如何实现数据实时上报的,望大神们指点。