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]为止。一条完整的数据就出来了。 写得很随意,理解理解~
Socket分包处理的解决方案
最新推荐文章于 2023-09-30 17:14:42 发布