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 { @Override public void exceptionCaught( IoSession session, Throwable cause ) throws Exception { cause.printStackTrace(); } @Override public 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..."); } @Override public void sessionIdle( IoSession session, IdleStatus status ) throws Exception { System.out.println( "IDLE " + session.getIdleCount( status )); } @Override public void messageSent(IoSession arg0, Object arg1) throws Exception { } @Override public void sessionClosed(IoSession arg0) throws Exception { } @Override public void sessionCreated(IoSession arg0) throws Exception { } @Override public void sessionOpened(IoSession arg0) throws Exception { } }


客户端测试:


服务器端输出:

2012-03-13 18:00:17 CREATED 2012-03-13 18:00:17 CREATED 2012-03-13 18:00:17 OPENED 2012-03-13 18:00:17 OPENED 2012-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 2 2012-03-13 18:00:20 Processing a MESSAGE_RECEIVED for session 2 Message 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 IDLE 2012-03-13 18:00:30 IDLE IDLE 1 2012-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 2 2012-03-13 18:00:34 Processing a MESSAGE_RECEIVED for session 2 Message 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 2 2012-03-13 18:00:34 Processing a MESSAGE_RECEIVED for session 2 Message 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 2 2012-03-13 18:00:34 Processing a MESSAGE_RECEIVED for session 2 Message 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 IDLE 2012-03-13 18:00:44 IDLE IDLE 1 2012-03-13 18:00:54 IDLE 2012-03-13 18:00:54 IDLE IDLE 2 2012-03-13 18:01:04 IDLE 2012-03-13 18:01:04 IDLE IDLE 3 2012-03-13 18:01:14 IDLE 2012-03-13 18:01:14 IDLE IDLE 4 2012-03-13 18:01:24 IDLE 2012-03-13 18:01:24 IDLE IDLE 5 2012-03-13 18:01:34 IDLE 2012-03-13 18:01:34 IDLE IDLE 6 2012-03-13 18:01:44 IDLE 2012-03-13 18:01:44 IDLE IDLE 7 2012-03-13 18:01:54 IDLE 2012-03-13 18:01:54 IDLE IDLE 8 2012-03-13 18:02:04 IDLE 2012-03-13 18:02:04 IDLE IDLE 9 2012-03-13 18:02:14 IDLE 2012-03-13 18:02:14 IDLE IDLE 10 2012-03-13 18:02:24 IDLE 2012-03-13 18:02:24 IDLE IDLE 11 2012-03-13 18:02:34 IDLE 2012-03-13 18:02:34 IDLE IDLE 12 2012-03-13 18:02:44 IDLE 2012-03-13 18:02:44 IDLE IDLE 13 2012-03-13 18:02:54 IDLE 2012-03-13 18:02:54 IDLE IDLE 14 2012-03-13 18:03:04 IDLE 2012-03-13 18:03:04 IDLE IDLE 15
注意:

1、IoAcceptor的Handler需要自己实现

2、理解IoHandler的方法的含义


具体例子解释请看下章。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值