apache mina

来源:互联网 发布:透视变换算法 编辑:程序博客网 时间:2024/04/30 03:40


Mina几个重要接口:

IoAccepter

IoHandler

服务端编写首先通过IoAccepter 创建服务端监控进程,接着指定编码过滤器,最后  IoHandler 创建业务处理逻辑并绑定。关键步骤在于编码过滤器,它决定了数据解析的速度。 IoHandler 则是具体业务的处理。

具体使用如下:

IoAcceptor acceptor = new NioSocketAcceptor();
  acceptor.getFilterChain().addLast("logger", new LoggingFilter());
  acceptor.getFilterChain().addLast(
    "codec",
    new ProtocolCodecFilter(new CodecFactory(Charset
      .forName("UTF-8"))));// 指定编码过滤器

  IoHandler handler = getTimeHandler();
  acceptor.setHandler(handler);// 指定业务逻辑处理器
  acceptor.getSessionConfig().setReadBufferSize(2048);
  acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE,
    IDELTIMEOUT);
  acceptor.setDefaultLocalAddress(new InetSocketAddress(PORT));// 设置端口号
  acceptor.bind();// 启动监听

编码过滤器实现如下:

public class CodecFactory implements ProtocolCodecFactory {
    private final IcossEncoder encoder;
    private final IcossProtocolDecoder decoder;
 public IcossCodecFactory(Charset charset) {
  encoder = new IcossEncoder(charset);
  decoder = new IcossProtocolDecoder(charset);
 }

 @Override
 public ProtocolEncoder getEncoder(IoSession iosession) throws Exception {
  return encoder;
 }

 @Override
 public ProtocolDecoder getDecoder(IoSession iosession) throws Exception {
  return decoder;
 }

}

0 0