Mina框架及接口开发

本文介绍Mina框架的基本概念,包括其架构组成、核心组件及如何使用Mina搭建服务端程序。通过具体实例展示了如何配置服务端,处理客户端连接请求及消息收发。

      Mina是NIO实现的一个架构,可以通过它快速开发网络通信,中间件等服务端程序。

IOService接口:描述服务端和客户端接口,子类是connector和Acceptor分别用于描述客户端和服务端。

IOproceser 多线程环境来处理我们的连接请求流程,ioFilter提供数据的过滤工作,包括编解码,日志等信息过滤。

Handler就是我们的业务对象,自定义Handler需实现IOHandlerAcceptor。

IOsession描述的是客户端和服务端连接的描述,常用于描述发送和接收数据。

总结:客户端流程 IOconnector->IOProcessor->IOFilter->Handler

           服务端流程 IOAcceptor->IOProcessor->IOFilter->Handler

server端:

package com.zjl.demo.mina;

import java.net.InetSocketAddress;

import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;

import org.apache.mina.filter.codec.ProtocolCodecFilter;

import org.apache.mina.filter.codec.textline.TextLineCodecFactory;

import org.apache.mina.transport.socket.SocketAcceptor;

import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

public class MinaServer {

  public void init( ) thows Exception {

         SocketAcceptor acceptor = new NioSocketAcceptor(Runtime.getRuntime( ).availableProcessors( ) +1);

       DefaultIofilterChainBuilder chain = acceptor.getFilterChain( );

       chain.addLast("codec",new ProtocolCodecFilter(

                     new TextLineCodecFactory( )));

     acceptor.setHandler(new MinaServerHandler( ) );

     acceptor.bind(new InetSocketAddress(8300));

     System.out.printIn("绑定端口8300");

}

    public MinaServer( ) throws Exception {

    init( );

}

    public static void main(String[ ] args) throws Exception {

            new MinaServer( );

           System.out.printIn(Mina服务器开启“);

   }

}

服务端消息处理类:

package com.zjl.demo.mina;

import org.apache.mina.core.service.IoHandlerAdapter;

import org.apache.mina.core.session.IdleStatus;

 import org.apache.mina.core.session.IoSession;

 public class MinaServerHanlder extens IoHandlerAdapter {

   @Override

 public void messageReceived(IoSession session, Object message)

    thows Exception {

         session.write("服务端发送消息”+message);

         session.write("quite");

}

   @Override

   public void exceptionCaught (IoSession session,Throwable cause)

               throws Exception {

        if(session.isConnected( ))  {

            session.close(true);

   }

}

   @Override

  public void exceptionCaught(IoSession session,Throwable cause)

    throws Exception {

  if(session.isConnected) {

     session.close(true);

    }

}

   @Override

  public void messageSent(IoSession session, Object message) throws Exception {

       System.out.printIn("服务端收到消息“ + message.toString( ));

}

  @Override

 public void sessionClosed(IoSession session) throws Exception {

         super.sessionClosded(session);

         System.out.printIn("sessionCLosed");

}

   @Override

   public void sessionCreated(IoSession session) throws Exception {

            session.getConfig( ).setIdleTime(IdleStatus.BOTH_IDLE,30000);

}

    @Override

   public void sessionIdle(IoSession session, IdleStatus status)

            throws Exception {

           session.close(true);

}

  @Override

  public void sessionOpened(IoSession session) throws Exception {

     super.sessionOpened(session);

 }

}

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值