sharpds77 发表于 2017-1-7 07:46:54

apache mina 学习(一)-----时间服务器

  timeServer的例子:
  服务器:
public class TimeMachineServer {private static final int PORT = 9123;public static void main( String[] args ) throws IOException{IoAcceptor acceptor = new NioSocketAcceptor();acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));acceptor.setHandler( new TimeServerHandler() );acceptor.getSessionConfig().setReadBufferSize( 2048 );acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );acceptor.bind( new InetSocketAddress(PORT) );}}TimeServerHandler:package com.yushh.test.timeMachine;import java.util.Date;import org.apache.mina.core.service.IoHandler;import org.apache.mina.core.session.IdleStatus;import org.apache.mina.core.session.IoSession;public class TimeServerHandler implements IoHandler {@Overridepublic void exceptionCaught( IoSession session, Throwable cause ) throws Exception{cause.printStackTrace();}@Overridepublic void messageReceived( IoSession session, Object message ) throws Exception{String str = message.toString();if( str.trim().equalsIgnoreCase("quit") ) {session.close();return;}Date date = new Date();session.write( date.toString() );System.out.println("Message written...");}@Overridepublic void sessionIdle( IoSession session, IdleStatus status ) throws Exception{System.out.println( "IDLE " + session.getIdleCount( status ));}@Overridepublic void messageSent(IoSession arg0, Object arg1) throws Exception {}@Overridepublic void sessionClosed(IoSession arg0) throws Exception {}@Overridepublic void sessionCreated(IoSession arg0) throws Exception {}@Overridepublic void sessionOpened(IoSession arg0) throws Exception {}}  

客户端测试:


  服务器端输出:
2012-03-13 18:00:17CREATED2012-03-13 18:00:17CREATED2012-03-13 18:00:17OPENED2012-03-13 18:00:17OPENED2012-03-13 18:00:20RECEIVED: HeapBuffer2012-03-13 18:00:20RECEIVED: HeapBuffer2012-03-13 18:00:20Processing a MESSAGE_RECEIVED for session 22012-03-13 18:00:20Processing a MESSAGE_RECEIVED for session 2Message written...2012-03-13 18:00:20SENT: HeapBuffer2012-03-13 18:00:20SENT: HeapBuffer2012-03-13 18:00:30IDLE2012-03-13 18:00:30IDLEIDLE 12012-03-13 18:00:34RECEIVED: HeapBuffer2012-03-13 18:00:34RECEIVED: HeapBuffer2012-03-13 18:00:34Processing a MESSAGE_RECEIVED for session 22012-03-13 18:00:34Processing a MESSAGE_RECEIVED for session 2Message written...2012-03-13 18:00:34SENT: HeapBuffer2012-03-13 18:00:34SENT: HeapBuffer2012-03-13 18:00:34RECEIVED: HeapBuffer2012-03-13 18:00:34RECEIVED: HeapBuffer2012-03-13 18:00:34Processing a MESSAGE_RECEIVED for session 22012-03-13 18:00:34Processing a MESSAGE_RECEIVED for session 2Message written...2012-03-13 18:00:34SENT: HeapBuffer2012-03-13 18:00:34SENT: HeapBuffer2012-03-13 18:00:34RECEIVED: HeapBuffer2012-03-13 18:00:34RECEIVED: HeapBuffer2012-03-13 18:00:34Processing a MESSAGE_RECEIVED for session 22012-03-13 18:00:34Processing a MESSAGE_RECEIVED for session 2Message written...2012-03-13 18:00:34SENT: HeapBuffer2012-03-13 18:00:34SENT: HeapBuffer2012-03-13 18:00:44IDLE2012-03-13 18:00:44IDLEIDLE 12012-03-13 18:00:54IDLE2012-03-13 18:00:54IDLEIDLE 22012-03-13 18:01:04IDLE2012-03-13 18:01:04IDLEIDLE 32012-03-13 18:01:14IDLE2012-03-13 18:01:14IDLEIDLE 42012-03-13 18:01:24IDLE2012-03-13 18:01:24IDLEIDLE 52012-03-13 18:01:34IDLE2012-03-13 18:01:34IDLEIDLE 62012-03-13 18:01:44IDLE2012-03-13 18:01:44IDLEIDLE 72012-03-13 18:01:54IDLE2012-03-13 18:01:54IDLEIDLE 82012-03-13 18:02:04IDLE2012-03-13 18:02:04IDLEIDLE 92012-03-13 18:02:14IDLE2012-03-13 18:02:14IDLEIDLE 102012-03-13 18:02:24IDLE2012-03-13 18:02:24IDLEIDLE 112012-03-13 18:02:34IDLE2012-03-13 18:02:34IDLEIDLE 122012-03-13 18:02:44IDLE2012-03-13 18:02:44IDLEIDLE 132012-03-13 18:02:54IDLE2012-03-13 18:02:54IDLEIDLE 142012-03-13 18:03:04IDLE2012-03-13 18:03:04IDLEIDLE 15
注意:  1、IoAcceptor的Handler需要自己实现
  2、理解IoHandler的方法的含义
  

  具体例子解释请看下章。
页: [1]
查看完整版本: apache mina 学习(一)-----时间服务器