前言:由于要实现将安卓相机的预览数据在PC上处理,所以想到的就是通过socket方式进行通信,PC端采用c#实现。实际测试发现要想高速传输还是有难度,即使用千兆网,目前效果还是不理想。每帧1.5MB的预览数据在千兆网下,每秒只能传送30帧左右,也就是说只能传一种预览数据,要想传多个那么每种数据的帧率就达不到30帧。
为了最大程度提高传输速度,可使用网线将PC和安卓设备直接相连。然后在PC上设置静态以太网IP地址,例如,IP设成192.168.1.1,掩码255.255.255.0,网关192.168.1.1;安卓端设置以太网为静态IP,IP地址设成192.168.1.2,掩码255.255.255.0,网关192.168.1.1。最后在PC端程序将IP地址改成设备端IP地址即可通信,经验证使用超五类网线连接PC和安卓设备,且PC和安卓设备均支持千兆以太网情况下,数据传输方式为不间断持续传输(每一组数据之间无时间间隔),传输速率能稳定在50MB/s。
以下是最简单的PC和安卓进行socket通信的demo。
一、PC端socket通信软件demo,见我的码云代码:
使用Visual studio2019开发。
二、安卓端socket通信app demo,见我的码云代码:
使用Android studio 4.2.1开发
以上软件配合使用即可实现PC和安卓通信。
在安卓端发送数据到远端时,不要使用多线程去发送数据,否则接收端收到的数据会错乱,尤其是持续发送数据时。只能在单一子线程中去发送,切记。