`
yl.fighter
  • 浏览: 258235 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
MINA 入门
1. 简介

a) Apache MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序。它提供了一个通过Java NIO在不同的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步API。
b) MINA结构:

i. 整体来说, 建立在应用至上的MINA分为三层:
1. I/O Service – 执行真正的I/O
2. I/O Filter Chain – 过滤/转换二进制为需要的数据结构
3. I/O Handler – 提供真正的业务逻辑

ii. 建立MINA
1. Create I/O service – 选择已有的, 或自己创建
2. Create Filter Chain – 选择已有的, 或自己创建
3. Create I/O Handler – 针对不同的消息写业务逻辑

2. HelloWorld
a) http://mina.apache.org/downloads.html下载mina
b) 创建项目,加入所需jar包:
  • i. mina-core-2.0.0.jar
  • ii. mina-example-2.0.0.jar
  • iii. slf4j-api-1.5.11.jar
  • iv. slf4j-log4j12-1.5.0.jar
  • v. log4j-1.2.15.jar

c) 写测试类
i. 服务器端注册是程序: MinaTimeServer.java
1.	package test.server;
2.	
3.	import java.io.IOException;
4.	import java.net.InetSocketAddress;
5.	import java.nio.charset.Charset;
6.	
7.	import org.apache.mina.core.service.IoAcceptor;
8.	import org.apache.mina.core.session.IdleStatus;
9.	import org.apache.mina.filter.codec.ProtocolCodecFilter;
10.	import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
11.	import org.apache.mina.filter.logging.LoggingFilter;
12.	import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
13.	
14.	public class MinaTimeServer {
15.		
16.		private static final int PORT = 9123;
17.	
18.	    public static void main(String[] args) throws IOException {
19.	    	
20.	    	// 创建非阻塞式的接受器
21.	    	IoAcceptor acceptor = new NioSocketAcceptor();
22.	    	        
23.	    	// 添加两个过滤器 : a logger and a codec
24.	    	acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
25.	    	// codec : 提供二进制或基于特定协议的数据 与 消息对象 之间的相互转换
26.	    	acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));
27.	    	   
28.	    	// 在这个服务上加入业务逻辑
29.	    	acceptor.setHandler( new TimeServerHandler() ); 
30.	
31.	    	// 配置缓存及闲置时间
32.	    	acceptor.getSessionConfig().setReadBufferSize( 2048 );
33.	    	acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );
34.	    	        
35.	    	// 添加绑定
36.	    	acceptor.bind( new InetSocketAddress(PORT) );
37.	
38.	    }
39.	}

ii. 服务器端的业务处理类: TimeServerHandler.java
1.	package test.server;
2.	
3.	import java.util.Date;
4.	
5.	import org.apache.mina.core.service.IoHandlerAdapter;
6.	import org.apache.mina.core.session.IdleStatus;
7.	import org.apache.mina.core.session.IoSession;
8.	
9.	public class TimeServerHandler extends IoHandlerAdapter{
10.	
11.	    @Override
12.	    public void exceptionCaught( IoSession session, Throwable cause ) throws Exception
13.	    {
14.	        cause.printStackTrace();
15.	    }
16.	
17.	    @Override
18.	    public void messageReceived( IoSession session, Object message ) throws Exception
19.	    {
20.	        String str = message.toString();
21.	        
22.	        if( str.trim().equalsIgnoreCase("quit") ) {
23.	            // "Quit" ? let's get out ...
24.	            session.close(true);
25.	            return;
26.	        }
27.	
28.	        // Send the current date back to the client
29.	        Date date = new Date();
30.	        session.write( date.toString() );
31.	        System.out.println("Message written...");
32.	    }
33.	
34.	    @Override
35.	    public void sessionIdle( IoSession session, IdleStatus status ) throws Exception
36.	    {
37.	        System.out.println( "IDLE " + session.getIdleCount( status ));
38.	    }
39.	}

iii. 首先测试服务器
1. Cmd窗口 输入 telnet loaclhost 9123 连接上服务器
注: telnet 命令 在window7 和vista 默认是 不可用的, 解决方法为:
a. Start -> Control Pannel -> Uninstall a program -> Turn Windows features on or off
b. 勾选 "Telnet Client"  确定即可
2. 输入 消息内容 服务器返回 信息 系统时间 即表示成功

分享到:
评论

相关推荐

    mina学习基础-入门实例-传输定长报文(三)

    1. **Mina框架简介**:Mina提供了一套丰富的API,用于处理TCP/IP、UDP等网络协议,支持Socket和NIO(非阻塞I/O)模式。它的核心组件包括Session、Filter、ProtocolCodec等,这些组件协同工作,使得开发网络应用变得...

    mina入门实例

    这就是一个基础的Mina入门实例,展示了如何使用Mina进行客户端-服务器间的通信。随着深入学习,你可以了解更多的Mina特性,如心跳机制、多线程处理、会话管理等,以构建更复杂、高效的网络应用。

    Apache Mina入门(完成版)

    在“Apache Mina入门(完成版)”这份资料中,你将了解到以下关键知识点: 1. **Mina架构**:Mina的核心设计理念是事件驱动和异步通信,它采用了I/O多路复用技术,如Java NIO(非阻塞I/O),以提高服务端处理大量...

    mina入门例子

    本入门例子将带你了解如何使用MINA进行基本的网络通信应用开发。 首先,MINA的核心概念包括`Session`、`Filter`和`Handler`。`Session`代表一个网络连接,它是数据传输的通道;`Filter`是处理`Session`中数据的...

    Mina入门:mina版之HelloWorld

    **Mina入门:Mina版之HelloWorld** Apache Mina是一个开源项目,它提供了一个高度模块化、高性能的网络通信框架。Mina旨在简化网络应用的开发,支持多种传输协议,如TCP、UDP、HTTP、FTP等。在这个“Mina入门:Mina...

    Apache Mina 入门Demo

    通过深入学习和实践这个Apache Mina入门Demo,你将掌握如何利用Mina构建网络应用,并了解其核心特性和工作原理,这对于从事Java网络编程或者需要处理大规模并发连接的开发者来说是非常有价值的。

    mina2资料-各种教程

    了解以上知识点是掌握Apache MINA的基础,通过提供的学习资料,如《Mina2.0学习笔记》、《Apache MINA入门基础》和《Apache MINA Server 2.0中文参考手册》等,可以深入学习MINA的API用法、设计原理和最佳实践。...

    MINA_API+MINA_DOC+mina

    MINA (Java IO Network ...总的来说,这个压缩包为初学者提供了一套完整的MINA学习资源,涵盖了理论知识、API详解和实战指导,有助于开发者快速入门并精通MINA框架,从而在实际工作中实现高效、稳定的网络通信应用。

    Mina框架入门介绍

    Apache Mina 框架是一个强大的网络通信框架,它的核心目标是简化开发高效且可扩展的网络应用程序。Mina 提供了基于事件驱动和异步IO的编程模型,特别是利用了Java NIO作为其默认的底层支持,这使得开发者能够构建高...

    Mina基础示例

    1. **异步I/O模型**:Mina基于NIO(Non-blocking I/O)实现,提供非阻塞的读写操作,这使得系统能够处理大量并发连接,提高系统的吞吐量。 2. **协议无关性**:Mina支持多种网络协议,如TCP/IP、UDP/IP、SSL/TLS等...

    mina2学习笔记

    #### 一、Mina入门详解 ##### 第一步:下载使用的Jar包 - **mina-core-2.0.0-M1.jar**:这是Mina核心库,提供了NIO框架的基本功能。 - **slf4j-api-1.5.2.jar**:用于日志记录的高级接口,简化了日志记录的过程。 ...

    mina 入门 教程

    3. **Mina入门步骤** - **设置环境**:首先,你需要在项目中引入Mina的依赖库,通常是通过Maven或Gradle来管理。 - **创建ProtocolCodecFactory**:定义数据编码和解码的规则,以便Mina可以正确处理网络传输的数据...

    mina框架的demo 入门,开发

    1. **IoSession**:这是Mina中的核心接口,代表一个连接会话。它包含了连接的状态信息,如读写缓冲区、会话属性以及传输数据的相关方法。 2. **Filter Chain**:Mina使用过滤器链来处理进来的消息。过滤器可以对...

    Mina2.0学习笔记

    #### 二、Mina入门实践 - **准备工作**: - **下载Mina核心库**:下载并解压mina2.0.1.zip,获取mina-core-2.0.0-M1.jar。 - **下载日志库**:下载并解压slf4j1.5.2.zip,获取slf4j-api-1.5.2.jar与slf4j-log4j12-...

    Mina 2.0快速入门与源码解析

    ### Mina 2.0快速入门与源码解析 #### Mina 2.0 快速入门 Mina 2.0 是一个基于Java NIO技术的高效、可伸缩的网络通信框架,广泛应用于服务器端开发。Mina 2.0 的设计目标是为开发者提供一个易于使用的API,使得...

Global site tag (gtag.js) - Google Analytics