1.自定义的编解码工厂:
要实现编解码工厂就要实现ProtocolCodecFactory这个接口.
2.实现自定义编解码器:
1)实现自定义解码器:实现ProtocolDecoder接口
2)实现自动自定义的编码器:实现ProtocolEncoder接口
3.为什么要使用自定义的编码器:
因为中往往不是通过一个字符串就可以传输所有的信息。我们传输的是自定义的协议包。并且能在应用程序和网络通信中存在对象和二进制流之间转化关系。所以我们需要结合业务编写自定义的编解码器.
4.常用的自定义协议的方法
1)定长的方式. Aa,bb,cc,ok,no等这样的通信方式.
2)定界符.helloworld|wacthmen|.....|... 通过特殊的符号来区别消息. 这样方式会出现粘包,半包等现象.
Hello world|watchemen. 带来了不正确消息,这样就应该丢弃数据.
3)自定义协议包
包头
包体
包头:数据包的版本号,以及整个数据包(包头+包体) 长度
包体:实际数据.
要实现编解码工厂就要实现ProtocolCodecFactory这个接口.
2.实现自定义编解码器:
1)实现自定义解码器:实现ProtocolDecoder接口
2)实现自动自定义的编码器:实现ProtocolEncoder接口
3.为什么要使用自定义的编码器:
因为中往往不是通过一个字符串就可以传输所有的信息。我们传输的是自定义的协议包。并且能在应用程序和网络通信中存在对象和二进制流之间转化关系。所以我们需要结合业务编写自定义的编解码器.
4.常用的自定义协议的方法
1)定长的方式. Aa,bb,cc,ok,no等这样的通信方式.
2)定界符.helloworld|wacthmen|.....|... 通过特殊的符号来区别消息. 这样方式会出现粘包,半包等现象.
Hello world|watchemen. 带来了不正确消息,这样就应该丢弃数据.
3)自定义协议包
包头
包体
包头:数据包的版本号,以及整个数据包(包头+包体) 长度
包体:实际数据.