Socket分包处理的解决方案

socket粘包是避免不了的,主要在于接收方如何解包和控制。处理方法:

    定制socket传输协议。增加包头、命令、数据长度、数据体、结束位。比如发送消息:,

String msg = "你好";
byte[] byBuffer = msg.getBytes();
//加入定制的协议该条数据位:
byte[] b = new byte[4+byBuffer.length];
b[0] = 0xFFFFF; //随便定义,包头
b[1] = 0x01; //命令
b[2] = byBuffer.length; //数据长度
b[3 - n] = byBuffer; //数据
b[b.length -1]  = 0x0d; //结束
接收方接收到该数据后判断包头是否一致,不一致则不要,根据b[2]数据长度来去数据,第一次未接收完继续接收第二次,直到接收数据长度==b[2]为止。一条完整的数据就出来了。
写得很随意,理解理解~

你可能感兴趣的:(android,Java)