举个例子:
public class Myecode implements ProtocolEncoder {
// 过滤器会自动跳入此方法
public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception {
List<String> db = (List<String>)message;//message代表session.write(Object obj)的obj,可以是自定义对象,后续文章会有讲解
byte[] data = //回写到客户端的流,一般都是message提供的流对象;
byte[] data = //回写到客户端的流,一般都是message提供的流对象;
ByteBuffer buffer = ByteBuffer.allocate(data.length);//MINA提供的工具ByteBuffer,创建一个长度为data.length的ByteBuffer
try {
buffer.putInt(data.length);//向流中写入一个int
} catch (Exception ex) {
buffer.putInt(0);
}
buffer.put(data);//流中写入byte数组
buffer.flip();//有点压栈的意思,还不是很清楚
out.write(buffer);//向客户端写入数据,并进入下一个过滤,没有过滤的话就响应到客户端了。
}
try {
buffer.putInt(data.length);//向流中写入一个int
} catch (Exception ex) {
buffer.putInt(0);
}
buffer.put(data);//流中写入byte数组
buffer.flip();//有点压栈的意思,还不是很清楚
out.write(buffer);//向客户端写入数据,并进入下一个过滤,没有过滤的话就响应到客户端了。
}
public void dispose(IoSession session) throws Exception {
}
}
}