java怎么处理socket服务端粘包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么处理socket服务端粘包相关的知识,希望对你有一定的参考价值。

参考技术A 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]为止。一条完整的数据就出来了。
写得很随意,理解理解~本回答被提问者采纳

以上是关于java怎么处理socket服务端粘包的主要内容,如果未能解决你的问题,请参考以下文章

粘包现象

网络编程-之------粘包现象

Netty——解决TCP粘包、拆包

python全栈开发基础补充解决tcp粘包

golang中tcp socket粘包问题和处理

网络编程(socket)中的粘包处理