`

Mina 学习笔记(入门)

    博客分类:
  • Java
阅读更多

Mina 入门
MINA 框架可以省下处理底层IO和线程并发操作,是基于NIO库的开发。

初步整理了下MINA的应用。

程序运行流程:
设定ServerHandler,ClientHandler继承自IoHandlerAdapter
调用 session.write(string) 时将会发送消息(messageSent)

1. run server, server bind
                                  2. run client, to connect
3. sessionOpened
                                  4. sessionCreated + messageSent
5. messageReceived + messageSent

...

基本代码如下:

 

服务端:

public class ServerMain
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        IoAcceptor acceptor = new NioSocketAcceptor();
        acceptor.getSessionConfig().setReadBufferSize(1024000);
        acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory()));
        acceptor.setHandler(new ServerHandler());
        try
        {
            acceptor.bind(new InetSocketAddress(9015));
            System.out.println(System.currentTimeMillis()+"=========  server bind :: " + 9015);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

}

 

public class ServerHandler extends IoHandlerAdapter
{

    @Override
    public void messageReceived(IoSession session, Object message) throws Exception
    {
    }

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

    @Override
    public void sessionOpened(IoSession session) throws Exception
    {
    }

}

 

===============================================================================

 

客户端:

public class ClientMain
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        IoConnector nsa = new NioSocketConnector();
        nsa.getSessionConfig().setReadBufferSize(10240);
        nsa.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory()));
        nsa.setHandler(new ClientHandler());
        IoSession session = null;

        try
        {
            ConnectFuture future = nsa.connect(new InetSocketAddress("192.168.1.1", 9015));
            future.awaitUninterruptibly();
            session = future.getSession();
            session.getCloseFuture().awaitUninterruptibly();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        nsa.dispose();
    }

}

 

public class ClientHandler extends IoHandlerAdapter
{

    @Override
    public void messageReceived(IoSession session, Object message) throws Exception
    {
    }

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

    @Override
    public void sessionCreated(IoSession session) throws Exception
    {
    }

}

 

附件给出测试代码和所需的包

分享到:
评论
1 楼 daijiejun 2011-03-29  
这个我也会 呵呵!

相关推荐

Global site tag (gtag.js) - Google Analytics