`

apache mina (异步连接框架)实例

 
阅读更多
一、介绍
mina(Multipurpose Infrastructure for Network Applications) 是apache的顶级项目之一,用于构造异步连接的各种网络应用
二、最简单的使用实例
package aicu.mina;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.mina.common.ByteBuffer;
import org.apache.mina.common.IoAcceptor;
import org.apache.mina.common.SimpleByteBufferAllocator;
import org.apache.mina.filter.LoggingFilter;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.SocketAcceptor;
import org.apache.mina.transport.socket.nio.SocketAcceptorConfig;

public class MinaTimeServer {

    private static final int PORT = 9123;

    public static void main(String[] args) throws IOException {
        //设置buffer
        ByteBuffer.setUseDirectBuffers(false);
        ByteBuffer.setAllocator(new SimpleByteBufferAllocator());
        //定义acceptor
        IoAcceptor acceptor = new SocketAcceptor();
        //定义config
        SocketAcceptorConfig cfg = new SocketAcceptorConfig();
        //设置config,加入filter
        cfg.getSessionConfig().setReuseAddress( true );
        cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
        cfg.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));
        //加入port handler cfg
        acceptor.bind( new InetSocketAddress(PORT), new TimeServerHandler(), cfg);
        System.out.println("MINA Time server started.");
     }
 }


对应的handler ,handler的作用是在对应的网事件的处理代码
package aicu.mina;
import java.util.Date;

import org.apache.mina.common.IdleStatus;
import org.apache.mina.common.IoHandlerAdapter;
import org.apache.mina.common.IoSession;
import org.apache.mina.common.TransportType;
import org.apache.mina.transport.socket.nio.SocketSessionConfig;

public class TimeServerHandler extends IoHandlerAdapter {
    public void exceptionCaught(IoSession session, Throwable t) throws Exception {
        t.printStackTrace();
        session.close();
     }

    public void messageReceived(IoSession session, Object msg) throws Exception {
        String str = msg.toString();
        //如果是quit就关闭session退出
        if( str.trim().equalsIgnoreCase("quit") ) {
            session.close();
            return;
         }
        //否则打印当前日期
        Date date = new Date();
        session.write( date.toString() );
        System.out.println("Message written");
     }

    public void sessionCreated(IoSession session) throws Exception {
        System.out.println("Session created");

        if( session.getTransportType() == TransportType.SOCKET )
            ((SocketSessionConfig) session.getConfig() ).setReceiveBufferSize( 2048 );

        session.setIdleTime( IdleStatus.BOTH_IDLE, 10 );
     }
 }

三、使用方法:
编译上边两个类(需要加入mina的jar文件),然后运行terminalServer
开始->运行->cmd进入控制台
telnet 127.0.0.1 9123
输入hello
得到当前日期
输入quit关闭session。
分享到:
评论

相关推荐

    apache mina 框架实例

    Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,主要用在开发网络通信应用,如TCP/IP和UDP/IP协议的服务器和客户端。这个框架允许开发者以一种简单、高效的方式处理I/O操作,同时提供了丰富的功能,如多...

    Apache Mina网络通信应用框架实例

    Apache Mina Server 是一个网络通信应用框架 基于 TCP/IP、UDP/IP协议栈的通信框架 支持串口和虚拟机内部的管道等传输方式 Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用 Mina 提供了事件驱动、异步操作...

    Apache mina源代码框架解析

    这个类是Mina服务器的主入口点,它创建了一个`NioSocketAcceptor`实例来监听TCP连接。`NioSocketAcceptor`是Mina提供的非阻塞I/O(NIO)实现,它基于Java的`java.nio`包,能够高效地处理大量并发连接。 在`...

    基于Apache Mina实现的TCP长连接和短连接实例

    Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在这个实例中,我们将深入探讨如何利用Apache Mina实现TCP的长连接和短连接。 首先,TCP(传输控制协议...

    Mina长连接短连接实例

    本文将深入探讨Mina框架中的长连接与短连接,并通过提供的Minaclient和MinaHost工程实例进行详细解析。 首先,我们需要了解什么是长连接和短连接。在TCP/IP通信中,短连接是指一次完整的通信过程(如HTTP请求)结束...

    Apache Mina帮助文档

    "Apache Mina chm pdf教程和帮助文档"提供了详尽的API参考和实例,涵盖了从基本概念到高级特性的各个方面,有助于开发者快速掌握Mina的使用方法。 **7. 社区支持** Apache Mina作为一个活跃的开源项目,拥有强大的...

    Apache Mina2服务器和客户端简单实例

    Apache Mina2是一个高度可扩展且高性能的网络通信框架,主要设计用于简化开发网络应用,如TCP/IP和UDP协议的服务端和客户端。它提供了一种事件驱动、非阻塞I/O模型,使得开发者能够更专注于业务逻辑,而不是底层的...

    apache mina socket实例

    mina简单示例,Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速...

    mina 同步客户端,异步客户端

    Session是MINA的核心概念,它代表了服务端与客户端之间的一个连接实例。服务端通过定义Filter Chain(过滤器链)来处理接收到的数据,这些过滤器可以进行数据编码、解码、安全验证等多种任务。 2. **同步客户端**:...

    ApacheMINA传递对象实例[借鉴].pdf

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个用于创建高性能、异步网络应用程序的Java框架。它简化了网络编程,特别是在TCP/IP和UDP协议上的应用,例如开发服务器或客户端通信系统。...

    mina框架实例

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发可扩展且高效的网络应用,如TCP/IP和UDP/IP服务器。MINA的目标是帮助开发者...

    MINA通讯框架的两个简单实例和文档

    Apache的Mina(Multipurpose Infrastructure Networked Applications)是一个网络应用框架,可以帮助用户开发高性能和高扩展性的网络应用程序;它提供了一个抽象的、事件驱动的异步API,使Java NIO在各种传输协议...

    Apache_Mina.zip_apache_mina

    Apache Mina是一个高性能、异步事件驱动的网络通信框架,主要用在开发网络应用服务器,如FTP、SMTP、NNTP等协议服务器。本教程“深入理解Apache Mina”将帮助我们深入了解这一强大的Java库。 Apache Mina的核心理念...

    mina2框架+项目实例教程

    一个网络应用框架,可以帮助用户开发高性能和高扩展性的网络应用程序;它提供了一个抽象的、事件...Apache Mina也称为:  NIO框架  客户端/服务端框架(典型的C/S架构)  网络套接字(networking socket)类库

    Apache_Mina_Server中文参考手册.pdf

    Apache Mina Server是一款基于Java的高性能、可扩展的网络通信应用框架。它支持TCP/IP和UDP/IP协议栈通信,并且可以提供Java对象序列化服务、虚拟机管道通信服务等多种功能。Mina框架的核心设计思想是使用事件驱动、...

    mina2服务端客户端实例,保证能够正常运行

    学习和研究这个实例,开发者可以了解到MINA如何处理异步I/O事件,如何定义自定义的协议处理类,以及如何利用MINA的API进行性能优化。这不仅有助于理解MINA的工作原理,还为开发实际的网络应用打下坚实基础。

    Apache MINA (2) Hello World!

    Apache MINA是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可伸缩和高性能的网络应用程序,如服务器。这个“Apache MINA (2) Hello World!”示例旨在帮助初学者理解MINA的基本用法。 MINA的核心概念...

    队列,mina通信的结合实例

    本实例将探讨如何将队列与MINA通信框架结合,以实现高效、可靠的网络服务。以下是关于这两个概念及其结合使用的详细说明。 **队列(Queue)** 队列是一种数据结构,遵循先进先出(FIFO,First In First Out)原则...

    apache mina详细介绍,适合新手入门mina

    Apache Mina 是一个高性能、可扩展的网络通信框架,它简化了基于 TCP/IP 和 UDP/IP 协议栈的网络应用程序的开发过程。Mina 提供了一个事件驱动、异步的操作模式,这种模式大大提升了应用程序的响应能力和处理能力。...

Global site tag (gtag.js) - Google Analytics