Socket分包处理的解决方案

来源:互联网 发布:淘宝睡衣买家秀 编辑:程序博客网 时间:2024/06/17 12:59
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]为止。一条完整的数据就出来了。写得很随意,理解理解~
0 0