`
sunshine518
  • 浏览: 45606 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

初学mina的例子!

阅读更多
mina(Multipurpose Infrastructure for Network Applications) 是apache的顶级项目之一,用于构造异步连接的各种网络应用
一个高性能 Java 异步并发网络通讯框架。利用 Mina 可以高效地完成以下任务:

TCP/IP 和 UDP/IP 通讯
串口通讯
VM 间的管道通讯
SSL/TLS
JXM 集成
IoC 容器集成( Spring 、 Pico 等)
状态机


文章出处:http://www.diybl.com/course/3_program/java/javajs/2008610/124226.html
二、最简单的使用实例
package com.test.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 com.test.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。
分享到:
评论
1 楼 s5sss 2012-08-28  
cfg.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
//加入port handler cfg
acceptor.bind(new InetSocketAddress(PORT), new TimeServerHandler(),cfg);

这两个地方  出现类型转换的问题 是怎么回事呢

相关推荐

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

    标签中的"mina"和"mina2"指代Apache MINA框架的不同版本,"例子"表示这是一个示例代码集合,"服务端"和"客户端"则明确了示例涵盖了网络通信的两端——服务器端和客户端的实现。 根据提供的压缩包文件名称列表"mina...

    mina开发实例

    "这句话暗示了这个压缩包可能包含了一些易于理解的示例代码,旨在帮助初学者快速上手Mina。这些例子可能涵盖了如何创建服务器端、客户端,以及如何处理各种网络事件,如数据接收、发送、连接管理和断开等。 在实际...

    mina开发步骤

    根据提供的文件信息,我们可以深入探讨Mina框架的开发步骤及相关配置细节。Mina(Multi-threaded IO Network Abstraction)是...此外,对于初学者来说,理解这些基本概念是非常重要的,它们是掌握Mina框架的关键所在。

    mina sslfilter大用法

    这个例子是一个很好的起点,可以帮助初学者理解如何在Mina框架中集成安全功能。如果有任何问题或需要进一步的帮助,可以联系pengli.bj@163.com获取支持。记住,安全无小事,正确配置和使用`SslFilter`对于保护用户...

    MINA2实用手册

    MINA2实用手册对于初学者来说是一个很好的学习资源,因为它涵盖了如何初始化服务端和客户端,以及配置各种关键参数。 一、服务端初始化及参数配置 服务端的初始化主要涉及以下几个步骤: 1. **创建Acceptor**: ...

    基于MINA构建简单高性能的NIO应用_曾冠东

    无论是对于初学者还是经验丰富的开发者而言,MINA都值得深入了解和学习。通过合理利用MINA提供的特性,开发者可以极大地提高网络应用程序的性能和稳定性,从而更好地满足现代互联网应用的高并发需求。

    通信测试例子,大家有空可以玩一下

    标题提到的"通信测试例子"可能是指一个用于教学或实践的示例项目,旨在帮助初学者或开发者理解通信协议、网络连接以及数据传输的基本原理。描述中的重复内容可能是由于误输入,我们主要关注标题和标签提供的信息。 ...

    短消息发送库C#例子代码

    而`SMSreadSend_demo`很可能是示例代码或者测试程序,展示了如何使用这个库来发送和接收短信,这对于初学者快速上手非常有帮助。 在实际使用过程中,开发者需要了解如何创建GSM modem的实例,配置端口参数,如何...

    netty入门例子--(不是翻译官方文档)

    这个“netty入门例子”旨在帮助初学者理解Netty的基本用法和特性,而不是简单地翻译官方文档,它提供了几个开发模板,以便于深入理解Netty中的消息异步通信机制和TCP通信的封装。 首先,Netty的核心是它的异步模型...

    mima框架所需的包集合

    7. **mina-examples**:示例代码或者教程,帮助初学者快速理解和上手MIMA框架,这些例子通常涵盖了基础用法和一些高级特性。 8. **mina-docs**:文档和API参考,是开发者了解框架功能、方法和最佳实践的重要资源。 ...

    juery框架写的弹窗效果适合新手

    在这个例子中,开发者使用的是`<script>`标签来引入jQuery 1.4版本的文件。这一步是必不可少的,因为所有jQuery的功能都将基于这个库。 ```html <script language="javascript" src="jquery-1.4.js"></script> ``` ...

    camel-manual-2.4.0, 用户手册

    这部分包含了一系列实用的例子,旨在帮助开发者解决常见的集成问题,例如: - **文件传输**:演示如何使用 Camel 进行文件传输。 - **消息转换**:展示如何将不同格式的消息转换为统一格式。 - **异步处理**:介绍...

    JAVA上百实例源码以及开源项目源代码

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    dubbo源码解析2

    在开始深入解析Dubbo源码之前,首先需要明确的是,Dubbo虽然代码量不算庞大,但是它涉及的技术领域非常广泛,对于初学者来说,可能需要具备一定的前置知识才能更好地理解和学习。以下是建议的学习路径: 1. **Java...

Global site tag (gtag.js) - Google Analytics