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
{
}
}
附件给出测试代码和所需的包