MINA通信enCode实现
来源:互联网 发布:wifi网络域名是什么 编辑:程序博客网 时间:2024/04/29 04:13
public class SocketServerEncoder extends ProtocolEncoderAdapter {
private static final Logger log = Logger
.getLogger(SocketServerEncoder.class);
private Charset charset = null;
public SocketServerEncoder(Charset charset) {
this.charset = charset;
log.debug("Server端#SocketServerEncoder构造方法,当前线程:"
+ Thread.currentThread().getId());
}
public void encode(IoSession session, Object message,
ProtocolEncoderOutput out) throws Exception {
if (message instanceof MessageInfo) {
MessageInfo hmi = (MessageInfo) message;
if (null != hmi) {
IoBuffer buf = IoBuffer.allocate(100).setAutoExpand(true);
buf.order(ByteOrder.LITTLE_ENDIAN);
String smsgbody = hmi.getMsgBody();
byte[] bytearr = smsgbody.getBytes(charset);
hmi.setMsgBodySize((short) bytearr.length);
buf.putShort(hmi.getMsgBodySize());
buf.putShort(hmi.getMsgIdentify());
buf.put(bytearr);
buf.flip();
log.debug("Server端#encode#MessageInfo#消息大小:" + buf.remaining());
out.write(buf);
out.flush();
}
}else{
log.error("Server端#encode#未知的消息类型!");
IoBuffer buf = IoBuffer.allocate(10).setAutoExpand(true);
buf.order(ByteOrder.LITTLE_ENDIAN);
String msgBody="未知的消息编码类型";
byte[] bytearr=msgBody.getBytes(charset);
buf.putShort((short)bytearr.length);
buf.putShort((short)0);//未知的消息类型
buf.put(bytearr);
buf.flip();
log.debug("Server端#encode#重造消息大小:" + buf.remaining());
out.write(buf);
out.flush();
}
}
}
private static final Logger log = Logger
.getLogger(SocketServerEncoder.class);
private Charset charset = null;
public SocketServerEncoder(Charset charset) {
this.charset = charset;
log.debug("Server端#SocketServerEncoder构造方法,当前线程:"
+ Thread.currentThread().getId());
}
public void encode(IoSession session, Object message,
ProtocolEncoderOutput out) throws Exception {
if (message instanceof MessageInfo) {
MessageInfo hmi = (MessageInfo) message;
if (null != hmi) {
IoBuffer buf = IoBuffer.allocate(100).setAutoExpand(true);
buf.order(ByteOrder.LITTLE_ENDIAN);
String smsgbody = hmi.getMsgBody();
byte[] bytearr = smsgbody.getBytes(charset);
hmi.setMsgBodySize((short) bytearr.length);
buf.putShort(hmi.getMsgBodySize());
buf.putShort(hmi.getMsgIdentify());
buf.put(bytearr);
buf.flip();
log.debug("Server端#encode#MessageInfo#消息大小:" + buf.remaining());
out.write(buf);
out.flush();
}
}else{
log.error("Server端#encode#未知的消息类型!");
IoBuffer buf = IoBuffer.allocate(10).setAutoExpand(true);
buf.order(ByteOrder.LITTLE_ENDIAN);
String msgBody="未知的消息编码类型";
byte[] bytearr=msgBody.getBytes(charset);
buf.putShort((short)bytearr.length);
buf.putShort((short)0);//未知的消息类型
buf.put(bytearr);
buf.flip();
log.debug("Server端#encode#重造消息大小:" + buf.remaining());
out.write(buf);
out.flush();
}
}
}
0 0
- MINA通信enCode实现
- MINA通信deCode实现
- Mina实现自定义协议的通信
- Mina实现自定义协议的通信
- Mina实现自定义协议的通信
- Mina实现自定义协议的通信
- 用MINA实现UDP通信的例子
- Android 使用Mina的Nio实现客户端服务器通信
- Mina长连接框架实现Android客户端与服务器端通信
- Mina长连接框架实现Android客户端与服务器端通信
- 由mina通信想到
- Apache Mina 网络通信
- Apache Mina 网络通信
- Apache Mina 网络通信
- Apache Mina 网络通信
- Mina socket通信
- MINA网络通信框架
- 【mina】对象序列化 mina通信
- 操作系统内存管理
- visualC++6.0如何调试程序
- 算法->编程之美2.5 寻找最大的K个数
- C#中汉字排序简单示例(拼音/笔划)
- iOS学习,计步器
- MINA通信enCode实现
- UVa 10602 - Editor Nottoobad
- VB.Net之旅--.Net多语言运行库的基础
- zoom的学习
- Mysql 不同版本 说明
- java实现循环队列
- CSS基础语法
- 采用伙伴系统算法编写内存分配和回收模拟程序
- 也还没有能自我生长的能力