ProtocolCodecFilter
来源:互联网 发布:卖家淘宝试用中心 编辑:程序博客网 时间:2024/06/06 04:02
为什么要用ProtocolCodecFilter
因为TCP协议保证所有的包按顺序送达,但它不保证发送方的写操作与接受方的读操作一一对应。具体到MINA中,在不使用ProtocolCodecFilter的情况下,发送方一次调用IoSession.write(Object message)有可能多次触发接受方的messageReceived(IoSession session, Object message)事件,也有可能发送方多次调用IoSession.write(Object message),而接受方只触发一次messageReceived(IoSession session, Object message)事件,当你的客户端和服务端运行在同一台机器上或者运行在同一个子网的时候,你可能不会遇到这个问题,但是你的应用应该支持这种情况
你也可以在IoHandler实现这些逻辑,但是使用ProtocolCodecFilter可以让你的代码更干净也更容易理解。
怎么用
假设你的程序只需要接受一些byte数据,并且把这些数据转换成消息(比较高级的对象)
通常来说有三种方法把字节流转换成消息:
1.使用定长的消息
2.使用定长的消息头,并用它指明消息体的长度
3.使用分隔符,比如许多基于文本的协议都使用回车换行(CR LF /r/n)作为消息的结尾
在我们的文档中将使用第一和第二中方法,因为他们实现起来比较简单,以后我们会介绍怎么使用分隔符
范例
我们将会编写一个(很废柴的)图片字符统计服务器(graphical chargen server 手头字典不行没查出来啥意思乱写的)来展示如何编写你自己的协议编码解码程序(ProtocolEncoder, ProtocolDecoder, and ProtocolCodecFactory)。
协议很简单,看起来就是下面这个样子的
4byte4byte4bytewidthheightnumchars
- ProtocolCodecFilter
- mina:ProtocolCodecFilter
- Why use a ProtocolCodecFilter
- mina ProtocolCodecFilter 中文手册
- MINA源码分析---协议编码解码过滤器ProtocolCodecFilter
- Mina中关于多个同类型Filter(如ProtocolCodecFilter)实例共存问题的解决
- Mina中关于多个同类型Filter(如ProtocolCodecFilter)实例共存问题的解决
- Java设计模式—Factory 买货篇
- ORA-28000: the account is locked-的解决办法
- OBIEE over 统计分析函数 使用
- int 转CString
- 关于auto_ptr_ref的一点问题
- ProtocolCodecFilter
- Linux架设DNS服务器(一)
- 升级nginx版本或者从新编译nginx增加新参数,我们可以使用下面方法来无缝升级nginx:
- DoDataExchange和UpdateData()--MFC函数
- liunx下安装jdk
- size_t,__T,_T,TEXT,_TEXT等一些特殊宏的理解
- cg数据类型
- 在Visual Assist X中增加Doxygen格式的注解的模板 [RT,修改]
- 如何通过CGImage得到bitmap