mina第三章 框架 深入理解

原创 2016年05月30日 18:41:26

前言:今天又看了一下mina框架,理解果然深入了, 下面我来分享我的心得


mina框架能解决的问题:

主要解决多客户端连接同一个服务器端


mina几个重要接口:

    IoServiece :这个接口在一个线程上负责套接字的建立,拥有自己的 Selector,监听是否有连接被建立。
    IoProcessor :这个接口在另一个线程上负责检查是否有数据在通道上读写,也就是说它也拥有自己的 Selector,这是与我们使用 JAVA NIO 编码时的一个不同之处,通常在 JAVA NIO 编码中,我们都是使用一个 Selector,也就是不区分 IoService与 IoProcessor 两个功能接口。另外,IoProcessor 负责调用注册在 IoService 上的过滤器,并在过滤器链之后调用 IoHandler。  
    IoAccepter :相当于网络应用程序中的服务器端
    IoConnector :相当于客户端
    IoSession :当前客户端到服务器端的一个连接实例
    IoHandler :这个接口负责编写业务逻辑,也就是接收、发送数据的地方。这也是实际开发过程中需要用户自己编写的部分代码。
    IoFilter :过滤器用于悬接通讯层接口与业务层接口,这个接口定义一组拦截器,这些拦截器可以包括日志输出、黑名单过滤、数据的编码(write 方向)与解码(read 方向)等功能,其中数据的 encode与 decode是最为重要的、也是你在使用 Mina时最主要关注的地方。</strong></span>

mina框架原理图:


客户端的通信过程:

    通过SocketConnector同服务器端建立连接。
    链接建立之后I/O的读写交给了I/O Processor线程,I/O Processor是多线程的。
    通过I/O Processor读取的数据经过IoFilterChain里所有配置的IoFilter,IoFilter进行消息的过滤,格式的转换,在这个层面可以制定一些自定义的协议。
    最后IoFilter将数据交给Handler进行业务处理,完成了整个读取的过程。
    写入过程也是类似,只是刚好倒过来,通过IoSession.write写出数据,然后Handler进行写入的业务处理,处理完成后交给IoFilterChain,进行消息过滤和协议的转换,最后通过I/O Processor将数据写出到socket通道。

IoFilterChain作为消息过滤链

  1. 读取的时候是从低级协议到高级协议的过程,一般来说从byte字节逐渐转换成业务对象的过程。
  2. 写入的时候一般是从业务对象到字节byte的过程。


原理解说: 服务器端开启监听,客户端开始连接(注意这里得客户端会有很多个),这时候 首先 socket通道开启了,然后 iosession监听开启,然后 开始执行 IOprocessor 、 iofileter 、Handler , 

socket作用:传输数据(俗称管道), 本人理解也为建立连接的管道标识.


iosession 是整个 客户端到服务端的生命周期,当然客户端和服务器端都可以关闭 session.


问题:项目中有很多个设备,客户端是不断地给服务器端发送连接,那么问题来了,如何在服务器端关闭到当前的客户端socket呢(注意不是session)     我们可以这样  session.getService().dispose();   完美关闭

这样的话,当socket都关闭了, 那么这个客户端(我所说的设备) 就彻底和服务端断开了(也就是不时时连接了).



其余的方法和demo 请自行百度搜索

mina第一篇:基本demo实现

今天看了下mina,实现了最简单的功能,其实就是一个传输字符串,但是受益匪浅. 废话少说,先介绍步骤 1、准备好几个包 log4j.jar mina-core-2.0.4.jar slf4j-a...

什么是TCP协议、UCP协议

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起...

深入理解Java集合框架系列-第三章 使用集合排序

使用Java集合框架中TreeSet和TreeMap实现排序

java mina框架的使用和一些自己的理解

@(java 技术笔记)java mina框架的使用和一些自己的理解1、什么是mina框架及为什么用mina?官网的解释为: Apache Mina Server 是一个网络通信应用框架,也就是说,...

《Apache MINA 2.0 用户指南》第三章:IO 服务

最近准备将Apache MINA 2.0 用户指南英文文档翻译给大家,但是我偶然一次百度,发现“Defonds”这位大牛已经翻译大部分文档。 原文链接:http://mina.apache.or...

MINA2.0用户手册中文版--第三章 第三节 服务端接口IoAcceptor

要构建一个服务端,你必须选择一个IoAcceptor接口的实现类。 接口IoAcceptor 基本上来说,该接口的命名是由于accpet()方法,它主要负责在一个客户端和该服务...

深入理解Mina

  • 2012年11月30日 09:40
  • 2.02MB
  • 下载

深入理解Apache Mina

  • 2013年05月09日 12:41
  • 1.51MB
  • 下载

深入理解Apache Mina (2)---- 与IoFilter相关的几个类

从名字上看知道IoFilter应该是一个过滤器,不错,它确实是一个过滤器,它和Servlet中的过滤器类似,主要用于拦截和过滤I/O操作中的各种信息。在Mina的官方文档中已经提到了IoFilter的...

深入理解Apache_Mina

  • 2011年08月12日 17:42
  • 2.21MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mina第三章 框架 深入理解
举报原因:
原因补充:

(最多只允许输入30个字)