Apache Mina使用手记(四)
来源:互联网 发布:更新后曼城球员数据 编辑:程序博客网 时间:2024/05/16 10:01
上一篇中,我们介绍了如何在mina中编写自己的日志过滤器,这一篇我们自己实现一个编解器。
实际应用当,很多应用系统应用的都不是标准的web service或XML等,比如象中国移动/联通/电信的短信网关程序,都有自己不同的协议实现,并且都是基于TCP/IP的字节流。Mina自带的编解码器实现了TextLineEncoder和TextLineDecoder,可以进行按行的字符串处理,对于象短信网关程序,就要自己实现编解码过滤器了。
我们定义一个简单的基于TCP/IP字节流的协议,实现在客户端和服务端之间的数据包传输。数据包MyProtocalPack有消息头和消息体组成,消息头包括:length(消息包的总长度,数据类型int),flag(消息包标志位,数据类型byte),消息体content是一个字符串,实际实现的时候按byte流处理。源代码如下:
回过头来,我们先看一下在MinaTimeServer中,如何使用一个文本的编解码过滤器,它是在过滤器链中添加了一个叫ProtocalCodecFilter的类,其中它调用了一个工厂方法TextLineCodecFactory的工厂类,创建具休的TextLineEncoder和TextLineDecoder编码和解码器。我们看一下具体的源代码:
TextLineFactory实现了ProtocalCodecFactory接口,该接口主要有一个编码的方法getEncoder()和一个解码的方法getDecoder():
我们主要是仿照TextLineEncoder实现其中的encode()方法,仿照TextLineDecoder实现其中的decode()即可,它们分别实现了ProtocalEncoder和ProtocalDecoder接口。我们要编写三个类分别是:MyProtocalCodecFactory,MyProtocalEncoder,MyProtocalDecoder对应TextLineCodecFactory,TextLineEncoder,TextLineDecoder。
在MyProtocalServer中,添加自己实现的Log4jFilter和编解码过滤器:
编写一个客户端程序进行测试:
也可以用IoConnector实现自己的客户端:
- Apache Mina使用手记(四)
- Apache Mina使用手记(四)
- Apache Mina使用手记(四)
- Apache Mina使用手记(一)
- Apache Mina使用手记(二)
- Apache Mina使用手记(三)
- Apache Mina使用手记(五)
- Apache Mina使用手记(一)
- Apache Mina使用手记(二)
- Apache Mina使用手记(三)
- apache mina 学习(四)-----日志配置
- mina 使用手记 1
- mina 使用手记 2
- mina 使用手记3
- mina 使用手记 4
- Apache Mina(二)
- Apache Mina(一)
- Apache Mina(二)
- c# 硬币算法
- c# 设n个人围坐在一个圆桌周围
- 嵌入式Linux开发综述
- GTD的基本理念、方法与网络资源
- progeCAD 2009专业版
- Apache Mina使用手记(四)
- 怎样去带一个不开窍的手下
- (转载)Linux内核网络设备操作部分阅读笔记收藏
- SQLite B+树实现代码
- 解决GHOST版XP无法使用远程桌面的问题
- 修改显示的内存容量
- 无敌删除命令
- tree 我的文档
- 开学三周学习感想