学习Android推送功能笔记(6)---Mina--CodecFactory自定义和一点别的扩展
来源:互联网 发布:畅言教学软件 编辑:程序博客网 时间:2024/06/05 09:03
学习了Mina的自定义CodcFactory(自定义加解码器)
- 第一步:新建一个
MyCodecFactory
类并实现ProtocolCodecFactory
接口,实现必须的方法getDecoder
和getEncoder
方法,Decorder
就是解码器,Encoder
就是加码器
这两个要自己编写. - 第二步:新建
MyEncoder
类和MyDecoder
类,分别实现ProtocolEncoder
和ProtocolDecoder
接口.其中主要实现的方法分别为encode
和’decode’
public void encode(IoSession session, Object message, ProtocolEncoderOutput out)throws Exception
该方法的参数,session
表示会话,传送过来的会话封装一些信息参数,message
表示要发送的消息,out
表示被封装后的输出流,消息处理好后用out
发出,decode
与此类似
防止数据丢失
现在客户端所有的消息都是添加了一个\n然后发送到服务端的,服务端根据发送过来的字符串解析遇到”\n”才会读取, 如果没有\n,那么服务器是不会读取的,再次接收到导游”\n”的数据,那么上一个带有”\n”的消息就会丢失,
Mina为了处理这种情况自带了一个Decoder类叫做CumulativeProtocolDecoder
顾名思义累积的解码器,也就是说,上次没有输出的信息会累加到下次遇到”\n”,当然,”\n”只是在本例中,我们可以根据自己的情况而定.
protected boolean doDecode(IoSession session, IoBuffer in,
ProtocolDecoderOutput out) throws Exception
可见这个方法跟ProtocolEncoder
最明显的区别就是这个方法有个bool类型的返回值,这个值代表如果确实通过out输出了,则返回true,否则返回false,返回false,数据不会丢失,累加到下次输出.
实际用处
- 比如一段XML很长,可能一开始发送了
<aa>
接着有发送了一段具体的内容<body>hello<body>
之类的,那么就要用到cumulativeProtocolDecoder了等
Client使用Mina
建立的时NioSocketConnector,Handler也要用,以及ProtocolCodercFiliter,socketAddress,传输数据还是用session
0 0
- 学习Android推送功能笔记(6)---Mina--CodecFactory自定义和一点别的扩展
- 学习Android推送功能笔记(5)---Mina初体验
- 学习Android推送功能笔记(1)
- 学习Android推送功能笔记--XMPP协议
- 学习Android推送功能笔记(2)---极光推送
- 学习Android推送功能笔记(3)---极光推送
- 学习Android推送功能笔记(9)---搭建推送平台
- android推送,androidpn项目分析及完善学习笔记(二) Mina
- 学习Android推送功能笔记(4)---Socket实战之服务器端
- apache mina 学习笔记之一:mina简介和环境搭建
- (一、有清除功能的 EditText扩展组件)android 自定义组件摸索过程中的一点分享
- Android自定义控件---继承ProgressBar功能扩展
- 自定义和扩展WordPress搜索功能
- Android学习之集成极光推送功能
- Android学习笔记——自定义EditText增加清除功能
- iOS和Android推送功能总结
- mina 学习笔记一
- mina框架学习笔记
- UI组件之UIWebView学习
- jquery 实时计算用户输入的字数
- hive概念
- NSURLConnecntion的问题
- 文件下载实现
- 学习Android推送功能笔记(6)---Mina--CodecFactory自定义和一点别的扩展
- Unix Network Programming(4)---TCP
- jrebel(转)
- c++虚拟函数virtual
- GitHub:代码是程序员沟通最直接的手段
- python的类属性和实例属性
- 关于java字符的编码问题学习
- iOS项目问题汇总<二>
- Hexagon DSP功能介绍