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();
}
}
}

MINA框架中的编码解码以及对粘包断包的处理

我们都知道MINA中是使用责任链的方式来实现将二进制字节流数据转换为java对象,或者将java对象转换为二进制字节流数据的,那么这个转换过程到底是怎么进行的呢?这就涉及到MINA中的编码与解码问题了...
  • hzw19920329
  • hzw19920329
  • 2016年08月14日 19:02
  • 3357

socket 通信的解决方案-Mina框架的使用心得及相关要点

前言 笔者之前的工作主要是做 java 的 web 端开发,后因工作原因参与了一个国家级的大项目,主要负责其中底层通讯的前置机模块。几经波折,将该系统完成后,结果在第一轮的测试中就惨败退回。其根本原...
  • libing13810124573
  • libing13810124573
  • 2016年04月21日 10:35
  • 2032

mina学习笔记七:串口编程

以前做过一个针对串口扫描枪解析的项目,当时是用的java.comm包。回忆一下dangshi...
  • Yoara
  • Yoara
  • 2014年07月12日 17:45
  • 5516

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

基于Android客户端的MINA框架的通信开发
  • victorfreedom
  • victorfreedom
  • 2014年12月15日 00:19
  • 4636

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

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

Mina实现自定义协议的通信

网络的传输使用需要遵循一定的规则,这些规则我们称为协议。如在互联网请求HTML页面的时候,我们要遵循HTTP协议,HTTP头的格式就是我们要遵守的规则: Request Headers Acce...
  • s464036801
  • s464036801
  • 2013年03月25日 16:18
  • 1074

Mina 2 编码解码协议 及 已经实现通信的完整代码

package lhy.charest; import java.nio.ByteOrder; import java.nio.charset.Charset; import lhy.clie...
  • u013378306
  • u013378306
  • 2015年05月16日 08:23
  • 698

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

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

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

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

Mina实现自定义协议的通信

网络的传输使用需要遵循一定的规则,这些规则我们称为协议。如在互联网请求HTML页面的时候,我们要遵循HTTP协议,HTTP头的格式就是我们要遵守的规则: Request Headers Accept...
  • shuangyidehudie
  • shuangyidehudie
  • 2014年01月10日 10:59
  • 565
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MINA通信enCode实现
举报原因:
原因补充:

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