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( " 服务器启动 " );
}
}
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));
}
}
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 | MINA Time server started. |
参考资料:1,MINA v2.0 Quick Start Guide