1:mina之浅谈
mina是apache基于socket nio的一套框架,可以从apache官网下载jar包和源码。试用起来非常方便,也非常强大。如果对socket nio还不是很了解的话:请看一下这两篇文章
学习bytebuffer和socket nio实例
这里我简单的介绍一下mina的框架:
IoService:这个接口是网络的入口,IoAcceptor和IoConnector都实现这个接口。从名字上我们可以看得出来IoAcceptor是接受链接的(服务端),而IoConnector是用来链接的(客户端)。
IoFilter:过滤器。他是用来过滤消息的。从IoService(网络接口)出来的数据或者进入IoService(网络接口)的数据都会经过IoFilter的处理。最重要的就是日志和解码和编码。
IoHandler:处理器。它是链接应用和IoFilter的桥梁,是进行业务处理的,从IoFilter出来的数据会发到IoHandler中处理。
看着这张图片,就应该明白mina中的数据时怎么传输的了吧。看起来很简单的样子?
2:mina实例
目标:
不管客户端发送什么数据到服务端,服务端口返回Hello world。
服务端实现
IoHandler:业务处理层
import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.core.session.IoSession; public class ServerHandler extends IoHandlerAdapter{ @Override public void exceptionCaught(IoSession session, Throwable cause) throws Exception{ System.out.println("报错啦............"); cause.printStackTrace(); } @Override public void messageReceived( IoSession session, Object message ) throws Exception{ String str = message.toString(); System.out.println("messageReceived:"+str); session.write("hello world"); } @Override public void sessionIdle( IoSession session, IdleStatus status ) throws Exception{ System.out.println( "IDLE " + session.getIdleCount( status )); } }