zoukankan      html  css  js  c++  java
  • 快速开发mina(翻译)

    本文的源地址为:http://mina.apache.org/mina-project/quick-start-guide.html

    本文带你进入如何建立一个基于mina程序的全过程。本文将带领你建立一个时间服务器。

    准备工作:

    • MINA 2.0.7 Core
    • JDK 1.5 或者以上版本
    • SLF4 1.3.0 或者以上版本(|http://www.slf4j.org/])
      • Log4J 1.2 版本: slf4j-api.jar, slf4j-log4j12.jar, 和Log4J 1.2.x
      • Log4J 1.3 版本: slf4j-api.jar, slf4j-log4j13.jar, and Log4J 1.3.x
      • java.util.logging 版本: slf4j-api.jar and slf4j-jdk14.jar
      • 注意 : 请确认你使用的 slf4j-*.jar 版本是和你的日志框架版本是相符合的. 例如, slf4j-log4j12.jarlog4j-1.3.x.jar 不能混合到一起使用, 如果这样使用可能会产生问题

    第一步:建立时间服务器:

    MinaTimeServer {
    
        public static void main(String[] args) {
            // code will go here next
        }
    }

    第二步:建立接收connection程序SocketAcceptor

    import org.apache.mina.core.service.IoAcceptor;
    import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
    
    public class MinaTimeServer
    {
        public static void main( String[] args )
        {
            IoAcceptor acceptor = new NioSocketAcceptor();
        }
    }

    第三步:定义处理类,并绑定NioSocketAcceptor到指定端口

    import java.nio.charset.Charset;
    
    import org.apache.mina.core.service.IoAcceptor;
    import org.apache.mina.filter.codec.ProtocolCodecFilter;
    import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
    import org.apache.mina.filter.logging.LoggingFilter;
    import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
    
    public class MinaTimeServer
    {
        public static void main( String[] args )
        {
            IoAcceptor acceptor = new NioSocketAcceptor();
    
            acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
            acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));
        }
    }

    第四步:增加处理类

    import java.io.IOException;
    import java.nio.charset.Charset;
    
    import org.apache.mina.core.service.IoAcceptor;
    import org.apache.mina.filter.codec.ProtocolCodecFilter;
    import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
    import org.apache.mina.filter.logging.LoggingFilter;
    import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
    
    public class MinaTimeServer
    {
        public static void main( String[] args ) throws IOException
        {
            IoAcceptor acceptor = new NioSocketAcceptor();
    
            acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
            acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));
    
            acceptor.setHandler(  new TimeServerHandler() );
        }
    }

    第五步:增加 NioSocketAcceptor配置

    import java.io.IOException;
    import java.nio.charset.Charset;
    
    import org.apache.mina.core.session.IdleStatus;
    import org.apache.mina.core.service.IoAcceptor;
    import org.apache.mina.filter.codec.ProtocolCodecFilter;
    import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
    import org.apache.mina.filter.logging.LoggingFilter;
    import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
    
    public class MinaTimeServer
    {
        public static void main( String[] args ) throws IOException
        {
            IoAcceptor acceptor = new NioSocketAcceptor();
    
            acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
            acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));
    
            acceptor.setHandler(  new TimeServerHandler() );
    
            acceptor.getSessionConfig().setReadBufferSize( 2048 );
            acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );
        }
    }

    第六步:处理类,继承自IoHandlerAdapter

    import java.util.Date;
    
    import org.apache.mina.core.session.IdleStatus;
    import org.apache.mina.core.service.IoHandlerAdapter;
    import org.apache.mina.core.session.IoSession;
    
    public class TimeServerHandler extends IoHandlerAdapter
    {
        @Override
        public void exceptionCaught( IoSession session, Throwable cause ) throws Exception
        {
            cause.printStackTrace();
        }
    
        @Override
        public void messageReceived( IoSession session, Object message ) throws Exception
        {
            String str = message.toString();
            if( str.trim().equalsIgnoreCase("quit") ) {
                session.close();
                return;
            }
    
            Date date = new Date();
            session.write( date.toString() );
            System.out.println("Message written...");
        }
    
        @Override
        public void sessionIdle( IoSession session, IdleStatus status ) throws Exception
        {
            System.out.println( "IDLE " + session.getIdleCount( status ));
        }
    }

    第七步:定义时间服务器要监听的地址。

    import java.io.IOException;
    import java.net.InetSocketAddress;
    import java.nio.charset.Charset;
    
    import org.apache.mina.core.service.IoAcceptor;
    import org.apache.mina.core.session.IdleStatus;
    import org.apache.mina.filter.codec.ProtocolCodecFilter;
    import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
    import org.apache.mina.filter.logging.LoggingFilter;
    import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
    
    public class MinaTimeServer
    {
        private static final int PORT = 9123;
    
        public static void main( String[] args ) throws IOException
        {
            IoAcceptor acceptor = new NioSocketAcceptor();
    
            acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
            acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));
    
            acceptor.setHandler( new TimeServerHandler() );
        acceptor.getSessionConfig().setReadBufferSize( 2048 );
            acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );
            acceptor.bind( new InetSocketAddress(PORT) );
        }
    }
  • 相关阅读:
    CC2540-BLE4.0 学历笔记1之串口体验
    cc2530的PWM实现
    用qt写的一个简单到不能在简单的上位机
    在Kubuntu14.04中安装小企鹅输入法
    初始化umi项目
    工具杂记(三) -- zookeeper
    工具杂记(二) -- Centos7
    工具杂记(一) -- vagrant
    (一)Docker导学
    JVM随笔(二)之搜索类
  • 原文地址:https://www.cnblogs.com/davidwang456/p/2999229.html
Copyright © 2011-2022 走看看