MINA通信enCode实现

原创 2014年06月14日 09:56:25
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();
}
}
}

相关文章推荐

Android开发之基于MINA框架的聊天通信功能实现

基于Android客户端的MINA框架的通信开发

Mina长连接框架实现Android客户端与服务器端通信

一、概述         Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供Java 对象的序列化...

基于MINA2实现的UDP双向通信源码

  • 2016年06月23日 16:09
  • 1022KB
  • 下载

Mina长连接框架实现Android客户端与服务器端通信

一、概述         Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、...

MINA通信deCode实现

public class SocketServerDecoder extends CumulativeProtocolDecoder { private static final Logger lo...

Mina实现自定义协议的通信

网络的传输使用需要遵循一定的规则,这些规则我们称为协议。如在互联网请求HTML页面的时候,我们要遵循HTTP协议,HTTP头的格式就是我们要遵守的规则: Request Headers Accept...

Android 使用Mina的Nio实现客户端服务器通信

1、添加jar包到客户端与服务器端 2、服务器端public class TcpServer { public static void main(String[] args) { ...
  • lovoo
  • lovoo
  • 2016年06月30日 21:41
  • 1091

Socket通信自定义mina 框架过滤器解析(处理粘包、断包问题)

mina 解决粘包、断包问题
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MINA通信enCode实现
举报原因:
原因补充:

(最多只允许输入30个字)