|
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:17 CREATED2012-03-13 18:00:17 CREATED2012-03-13 18:00:17 OPENED2012-03-13 18:00:17 OPENED2012-03-13 18:00:20 RECEIVED: HeapBuffer[pos=0 lim=2 cap=2048: 0D 0A]2012-03-13 18:00:20 RECEIVED: HeapBuffer[pos=0 lim=2 cap=2048: 0D 0A]2012-03-13 18:00:20 Processing a MESSAGE_RECEIVED for session 22012-03-13 18:00:20 Processing a MESSAGE_RECEIVED for session 2Message written...2012-03-13 18:00:20 SENT: HeapBuffer[pos=0 lim=0 cap=0: empty]2012-03-13 18:00:20 SENT: HeapBuffer[pos=0 lim=0 cap=0: empty]2012-03-13 18:00:30 IDLE2012-03-13 18:00:30 IDLEIDLE 12012-03-13 18:00:34 RECEIVED: HeapBuffer[pos=0 lim=2 cap=2048: 0D 0A]2012-03-13 18:00:34 RECEIVED: HeapBuffer[pos=0 lim=2 cap=2048: 0D 0A]2012-03-13 18:00:34 Processing a MESSAGE_RECEIVED for session 22012-03-13 18:00:34 Processing a MESSAGE_RECEIVED for session 2Message written...2012-03-13 18:00:34 SENT: HeapBuffer[pos=0 lim=0 cap=0: empty]2012-03-13 18:00:34 SENT: HeapBuffer[pos=0 lim=0 cap=0: empty]2012-03-13 18:00:34 RECEIVED: HeapBuffer[pos=0 lim=2 cap=1024: 0D 0A]2012-03-13 18:00:34 RECEIVED: HeapBuffer[pos=0 lim=2 cap=1024: 0D 0A]2012-03-13 18:00:34 Processing a MESSAGE_RECEIVED for session 22012-03-13 18:00:34 Processing a MESSAGE_RECEIVED for session 2Message written...2012-03-13 18:00:34 SENT: HeapBuffer[pos=0 lim=0 cap=0: empty]2012-03-13 18:00:34 SENT: HeapBuffer[pos=0 lim=0 cap=0: empty]2012-03-13 18:00:34 RECEIVED: HeapBuffer[pos=0 lim=2 cap=1024: 0D 0A]2012-03-13 18:00:34 RECEIVED: HeapBuffer[pos=0 lim=2 cap=1024: 0D 0A]2012-03-13 18:00:34 Processing a MESSAGE_RECEIVED for session 22012-03-13 18:00:34 Processing a MESSAGE_RECEIVED for session 2Message written...2012-03-13 18:00:34 SENT: HeapBuffer[pos=0 lim=0 cap=0: empty]2012-03-13 18:00:34 SENT: HeapBuffer[pos=0 lim=0 cap=0: empty]2012-03-13 18:00:44 IDLE2012-03-13 18:00:44 IDLEIDLE 12012-03-13 18:00:54 IDLE2012-03-13 18:00:54 IDLEIDLE 22012-03-13 18:01:04 IDLE2012-03-13 18:01:04 IDLEIDLE 32012-03-13 18:01:14 IDLE2012-03-13 18:01:14 IDLEIDLE 42012-03-13 18:01:24 IDLE2012-03-13 18:01:24 IDLEIDLE 52012-03-13 18:01:34 IDLE2012-03-13 18:01:34 IDLEIDLE 62012-03-13 18:01:44 IDLE2012-03-13 18:01:44 IDLEIDLE 72012-03-13 18:01:54 IDLE2012-03-13 18:01:54 IDLEIDLE 82012-03-13 18:02:04 IDLE2012-03-13 18:02:04 IDLEIDLE 92012-03-13 18:02:14 IDLE2012-03-13 18:02:14 IDLEIDLE 102012-03-13 18:02:24 IDLE2012-03-13 18:02:24 IDLEIDLE 112012-03-13 18:02:34 IDLE2012-03-13 18:02:34 IDLEIDLE 122012-03-13 18:02:44 IDLE2012-03-13 18:02:44 IDLEIDLE 132012-03-13 18:02:54 IDLE2012-03-13 18:02:54 IDLEIDLE 142012-03-13 18:03:04 IDLE2012-03-13 18:03:04 IDLEIDLE 15
注意: 1、IoAcceptor的Handler需要自己实现
2、理解IoHandler的方法的含义
具体例子解释请看下章。 |
|
|