上篇文章的时间服务器的例子是apache mina官网上的demo,首先在main函数中定义了一个IoAcceptor,这个IoAcceptor就是服务器接收io流的入口,接收到的io流我们该怎么处理呢,NioSocketAcceptor告诉我们用nio的一个socket连接来处理,SocketAcceptor是基于TCP/IP的编程实现。
接下来就是加入过滤连,也就是配置filter了,logger标示先加入日志拦截,众所周知,这样比较利于我们调试基本的程序,第二个加入的ProtocolCodecFilter是一个协议的编码过滤器,从名字我们可以得出,因为我们发送的是普通的文本信息,所以用TextLine的Code工厂,编码设置为utf-8,乙方出现乱码。
下面是设置一个自定义的Handler,顾名思义就是回调方法,这个方法要实现IoHandlerAdapter这个接口,从名字看这个接口是个适配器接口,适配什么呢?我猜想是把Io流中的数据适配给自定义的handler,呵呵 到此为止我尚不知道mina的框架结构,所以看懂什么地方说什么。
在看这个接口的方法:exceptionCaught:发现异常时执行此方法,参数是session和引发异常的原因,messagereceived方法:得到客户端发出的message,并且可以根据此信息来操作session,当然我们也可以取到session中的信息,因为这是参数传过来的,也行这就是IoHandler的妙处吧。
sessionIdel方法:session处于空闲状态,也就是连接在但是没发送数据的状态时执行的函数。
最后我们设置了session的缓冲区大小是2048,设置空闲时间是10s,也就是我们看到的,当空闲到10秒时,会自动执行我们的sessionIdel方法。最后把我们的服务绑定到9123端口。