Mina的执行流程代码

 IOAcceptor用于服务器端,绑定接口,添加Filter和Handler进行数据的处理!!!

package application.service;

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.transport.socket.nio.NioSocketAcceptor;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;

public class MinaServer {

    public static void main(String[] args) throws IOException {
        IoAcceptor ioAcceptor = new NioSocketAcceptor();

        ioAcceptor.getFilterChain()
                .addLast("encodingFilter",
                        new ProtocolCodecFilter(new TextLineCodecFactory(Charset
                                .forName("UTF-8"))));

        ioAcceptor.getFilterChain().addLast("IOFilter",new IOServerFilter());

        ioAcceptor.setHandler(new IOServerHandler());

        ioAcceptor.bind(new InetSocketAddress(8000));

        System.out.println("mina server started!!!");
    }
}

服务器端的IOFilter:

package application.service;

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

public class IOServerFilter extends IoFilterAdapter {


    @Override
    public void sessionCreated(NextFilter nextFilter, IoSession session) throws Exception {
        System.out.println("server filter session created");
        session.write("message create bty server : 你好,世界!!!");
        super.sessionCreated(nextFilter, session);
    }


    @Override
    public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
        System.out.println("server filter messageReceived :" + message);
        super.messageReceived(nextFilter, session, message);
    }
}

服务器端的IOHandler:

package application.service;

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

public class IOServerHandler extends IoHandlerAdapter {

    @Override
    public void messageReceived(IoSession session, Object message) throws Exception {
        System.out.println("server handler messageReceived:"+ message);
        super.messageReceived(session, message);
    }

    @Override
    public void sessionCreated(IoSession session) throws Exception {
        System.out.println("server handler session created");
        super.sessionCreated(session);
    }
}

IOConnector用于客户端,连接服务器ip和端口,添加Filter和Handler进行数据的处理!!!

package application.service;

import org.apache.mina.core.service.IoConnector;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketConnector;

import java.net.InetSocketAddress;
import java.nio.charset.Charset;

public class MinaClient {

    public static void main(String[] args) {
        IoConnector ioConnector = new NioSocketConnector();

        ioConnector.getFilterChain()
                .addLast("encodingFilter",
                        new ProtocolCodecFilter(new TextLineCodecFactory(Charset
                                .forName("UTF-8"))));

        ioConnector.getFilterChain()
                .addLast("clientFilter",new IOClientFilter());

        ioConnector.setHandler(new IOClientHandler());


        ioConnector.connect(new InetSocketAddress(8000));


    }


}

客户端的IOFilter:

package application.service;

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

public class IOClientFilter extends IoFilterAdapter {

    @Override
    public void sessionCreated(NextFilter nextFilter, IoSession session) throws Exception {
        System.out.println("client filter session created");
        session.write("message from client : hello,world!!!");
        super.sessionCreated(nextFilter, session);
    }

    @Override
    public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
        System.out.println("client filter messageReceived:"+message);
        super.messageReceived(nextFilter, session, message);
    }
}

客户端的IOHandler:

package application.service;

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

public class IOClientHandler extends IoHandlerAdapter {
    @Override
    public void messageReceived(IoSession session, Object message) throws Exception {
        System.out.println("client handler messageReceived:"+ message);
        super.messageReceived(session, message);
    }

    @Override
    public void sessionCreated(IoSession session) throws Exception {
        System.out.println("client session created");
        super.sessionCreated(session);
    }
}

用户也可以自定义编码解码器来进行数据的传输!!!

Mina的执行流程代码