Apache MINA --- [ProtocolCodecFilter]
为什么使用它: TCP协议保证所有的包有正确的顺序,但是不保证发送端的一个写操作只导致接收端的一个读事件发生,用 MINA术语来描述 就是:没有ProtocolCodecFilter,发送端一个IoSession.write(...)能够导致接收端多个 messageReceived(...),多个write(...)也能被引导到一个messageReceived(...),也许在单机测试时我们 不会碰到这样的情况,但是我们的应用应该有能力处理这种问题. 大多数网络应用需要一种方式来找到当前信息的结束点和下一条信息的开始点. 我们能够在IoHandler中实现所有业务逻辑,但是添加ProtocolCodecFilter将使你的代码更加容易,清晰的维护. 它能帮助我们分离业务逻辑和协议逻辑. 怎么使用: 应用基本上仅仅接收字节流而且我们需要将它们转化成高层对象(message). 这里有三种通用技术来分割字节流到message: 1.使用固定长度的信息. 2.使用固定长度的消息头来指定的消息体的长度. 3.使用定界符(如:许多基于文本的协议会在每条消息末尾加上换行符). 例子: 本例中,我们将开发一个无用的图形字符服务来阐明如何实现自己的协议编解码器 Request: //一个简单的POJO代表一个请求 public class ImageRequest { private int