首先百度一下Mina
http://mina.apache.org/
如果想用Mina,就要下载Mina的jar包,,,
Apache MINA 2.0.9 stable (Java 5+)
Binaries
.tar.gz archive mina-2.0.9 (signatures : MD5 SHA1 ASC)
.tar.bz2 archive mina-2.0.9 (signatures : MD5 SHA1 ASC)
.zip archive mina-2.0.9 (signatures : MD5 SHA1 ASC)
Sources
.src.tar.gz archive mina-2.0.9(signatures : MD5 SHA1 ASC
.src.tar.bz2 archive mina-2.0.9 (signatures : MD5 SHA1 ASC
.src.zip archive mina-2.0.9 (signatures : MD5 SHA1 ASC
如果想研究源码就下载Sources,如果只是使用就下载Binaries就是了
导入到项目 dist下面的 mina-core-2.0.9.jar 和 lib下面的 slf4j.api-1.7.7.jar.第一个是核心功能.第二个是日志啥的,
四步实现基本Mina功能
- 第一步,初始化NioSocketAcceptor,用来接收客户端的连入,消息的接收等
NioSocketAcceptor acceptor = new NioSocketAcceptor();
- 第二步,为Acceptor设置Handler,Mina是通过Handler来处理消息的,把网络处理和消息处理分割开来,以便于代码的管理
acceptor.setHandler(new MyServerHandler());
当然handler是和已自己写的但是要继承IoHandlerAdapter
这个类,
里面设置了一些回调方法比如,接入时,发生异常时exceptionCaught
,收到消息时messageReceived
,发出消息时messageSent
,服务器闲置时等sessionIdle
- 第三步 为Acceptor设置解码器(拦截器),可以用常用的自带的解码器 PortocolCodecFiliter—TextLineCodecFactory,当然,这个知识用来读取一行数据的,要实现读取自己的数据,例如JSON,XML等,就要自定义了
acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory()));
- 第四步,绑定端口!
acceptor.bind(new InetSocketAddress(9899));
- 要用到服务器闲置时
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 5);