一、解决方案
1、使用 自定义协议 + 编解码器 来解决
2、关键就是要解决 服务器端每次读取数据长度的问题,这个问题解决,就不会出现服务器多读或少读数据的问题,从而避免了 TCP粘包和拆包
二、应用实例
1、要求客户端发送 5 个 Message 对象,客户端每次发送一个 Message 对象
2、服务器端每次接收一个Message,分 5 次进行解码,每读取到一个Message,会回复一个Message对象给客户端
2.1 协议包
public class MessageProtocol {
private int len; // 关键
private byte[] content;
public int getLen() {
return len;
}
public void setLen(int len) {
this.len = len;
}
public byte[] getContent() {
return content;
}
public void setContent(byte[] content) {
this.content = content;
}
}
2.2 编解码器
编码器:
评论