Netty 自定义协议实战
依赖
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.50.Final</version>
</dependency>
<dependency>
<groupId>com.caucho</groupId>
<artifactId>hessian</artifactId>
<version>4.0.63</version>
</dependency>
协议
public interface RpcProtocolConst {
int HEAD_START = 0x177;
}
@Getter
@Setter
public class RpcProtocol implements Serializable {
private static final long serialVersionUID = 42L;
public final int start = RpcProtocolConst.HEAD_START;
private int headerLength;
private RpcProtocolHeader header;
private int bodyLength;
private byte[] body;
}
@Getter
@Setter
public class RpcProtocolHeader implements Serializable {
private static final long serialVersionUID = 42L;
private String id;
private String version;
}
序列化工具类
public class HessianUtils {
public static <T> T read(byte[] data, Class<T> clazz) {
ByteArrayInputStream os = new ByteArrayInputStream(data);
Hessian2Input input = new Hessian2Input(os);
try {
return (T) input.readObject(clazz);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
publi