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 入门指南
上文《[BIO、NIO、IO多路复用模型详细介绍&Java NIO 网络编程》](https://wangbinguang.blog.csdn.net/article/details/132047951)介绍了几种IO模型以及Java NIO,了解了在网络编程时使用哪种模型可以提高系统性能及效率。即使Java NIO可以帮助开发人员编写和维护网络应用程序,但由于其复杂性以及bug问题,还是诞生很多强大和流行的网络编程框架,比如Netty、Undertow、Grizzly,在平时的开发中大家更倾向于选择这些框架进行开发,而在我们学习和理解网络编程的底层原理时,使用Java NIO可以更加直接和深
79 0
|
Java 中间件 大数据
Netty快速入门RPC项目
Netty快速入门RPC项目
69 0
Netty快速入门RPC项目
|
12月前
|
Java API
03RPC - netty简介及入门
03RPC - netty简介及入门
65 0
|
安全 网络协议 Java
Netty快速入门
Netty快速入门
204 0
|
开发框架 Dubbo 前端开发
网络开发的最强大框架:Netty快速入门
Netty是一个异步的,基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。Netty的应用十分广泛,可以说主流的框架中,如果有网络方面的需求,一般用的都是netty框架。比如Dubbo、ES、Zookeeper中都用到了Netty。因此即使在平常工作中没有Netty的使用场景,Netty还是十分值得我们去学习的。
基于Netty的WEB聊天服务端开发|Java 开发实战
基于Netty的WEB聊天服务端开发|Java 开发实战
307 0