MinaTimeServer.java

package com.vista;

 

 

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;

 

 

import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

 

 

public class MinaTimeServer 
{
    
private static final int PORT = 6488;
    
public static void main(String[] args) throws IOException 
    {
        
//监听即将到来的TCP连接
        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));
        System.out.println(
"服务器启动");
    }

 

}

TimeServerHandler.java 

package com.vista;

 

 

import java.util.Date;

 

 

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;

 

 

public class TimeServerHandler extends IoHandlerAdapter
{

 

 

public void exceptionCaught(IoSession session, Throwable cause) throws Exception 
    {
        cause.printStackTrace();
    }
    
public void messageReceived(IoSession session, Object message) throws Exception 
    {
        String strMsg 
= message.toString();
        
if(strMsg.trim().equalsIgnoreCase("quit"))
        {
            session.close();
            
return;
        }
        Date date 
= new Date();
        session.write(date.toString());
        System.out.println(
"Message written");
    }
    
public void sessionIdle(IoSession session, IdleStatus status) throws Exception 
    {
        System.out.println(
"IDLE"+session.getIdleCount(status));        
    }

 

}

测试: 

Client Output

Server Output

user@myhost:~> telnet 127.0.0.1 9123
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hello
Wed Oct 17 23:23:36 EDT 2007
quit
Connection closed by foreign host.
user@myhost:~>

MINA Time server started.
Message written...

参考资料:1MINA v2.0 Quick Start Guide

作者:洞庭散人

出处:http://phinecos.cnblogs.com/    

本博客遵从Creative Commons Attribution 3.0 License,若用于非商业目的,您可以自由转载,但请保留原作者信息和文章链接URL。