Mina2.0快速入门

简介:
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...

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


本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2008/11/27/1342655.html,如需转载请自行联系原作者
目录
相关文章
|
安全 网络协议 Java
Netty快速入门
Netty快速入门
221 0
|
Java 中间件 大数据
Netty快速入门RPC项目
Netty快速入门RPC项目
75 0
Netty快速入门RPC项目
|
开发框架 Dubbo 前端开发
网络开发的最强大框架:Netty快速入门
Netty是一个异步的,基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。Netty的应用十分广泛,可以说主流的框架中,如果有网络方面的需求,一般用的都是netty框架。比如Dubbo、ES、Zookeeper中都用到了Netty。因此即使在平常工作中没有Netty的使用场景,Netty还是十分值得我们去学习的。