目前的几种协议制定方法:
There are three common techniques for splitting the stream of bytes into messages:
- use fixed length messages
固定长度的 - use a fixed length header that indicates the length of the body
固定协议头长度,内容长度可变 - using a delimiter; for example many text-based protocols append a newline (or CR LF pair) after every message
采用分隔符的方式
-------------------------------------------------------------------------------
在Mina中,有为协议解析的接口,分为编码和解码2个接口:
ProtocolEncoder:
ProtocolDecoder:
---------------------------------------------
在使用这2个接口的时候,还有一个接口需要关心:ProtocolCodecFactory
这个接口获取解码类和编码类;
还记得在timerserver中:
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
ProtocolCodecFilter就是通过ProtocolCodecFactory获取到编码和解码类,完成对应的工作;