Mina--结构分析

来源:互联网 发布:pe我的世界矿物追踪js 编辑:程序博客网 时间:2024/06/05 04:35

1 Mina工作流程:
这里写图片描述
IoConnector-》IOprcessor-》IOFilter-Handler-》IOAcceptor-》
IOProcess-》IOFilter-》Handler-》IOconnector

2 核心类说明:
2.1 IOService接口,子接口是IoConnector和IoAcceptor,分别用来描述我们的客户端和服务器端
getFilterChain:获取过滤链
setHandler(IoHandler handler):设置我们真正的业务
getSessionConfig()得到我们的配置信息
disponse()在我们完成关闭连接的时候所吊用的方法。
2.2 IoConnector
connect(SocketAddress remoteAddress)主要用户发起一个连接请求
setConnectTimeout(int connectTimeout)连接超时的设置
2.3 IoProcess:是以NIO为基础实现的多线程的方式来完成我们的读写工作。为我们的Filter读写原始数据的多线程的环境。
通过 NioSocketAcceptor(int processorCount)构造函数可以指定多线程的个数
通过 NioSocketConnector(int processorCount)构造函数也可以指定多线程的个数。
2.4 IOFilter
是在应用层和我们业务层之间的过滤成,自定义过滤器继承IoFilterAdapte,r在handler处理之前,需要调用相应的过滤器进行过滤
Client:业务Handler之前会吊用我们的过滤器
Server:同样在我们直接得到数据的时候,和发送数据的时候也调用了我们的过滤器,然后
才交给我们的handler。
2.5 IoAcceptor
bind(SocketAddress loaclAddress)绑定端口
getLocalAddress()获得本地IP地址
2.6 IoSession:描述的是客户端和服务端连接的描述,常常用于发送和接受数据
主要描述我们的网络通信双方所建立的连接之间的描述
IOSession:可以发送和读取数据,并且可以设置我们会话的上下文信息
IOSessionConfig:设置读写缓冲区的一些信息。
2.7 NioSocketConnector
connect(SocketChannel handle, SocketAddress remoteAddress) 连接请求
register(SocketChannel handle, ConnectionRequest request) 注册我们的IO事件
Select(int timeout)返回选择器
2.8 IoBuffer:基于JavaNio中的BytesBuffer做了封装,用户操作缓冲区中的数据,包括基本数据类型以及字节数组和一些对象,其本质就是一个可动态扩展的byte数组。
allocate(int capacity)指定大小空间
setAutoExpand(Boolean autoExpand)可以设置是否支持动态的扩展。
putString(CharSequence val, CharsetEncoder encoder)
putShort(short value);实现将数据放入缓冲区中。
reset:实现清空数据
Clear:实现数据的覆盖,

3 实际使用的过程中客户端采用NIOSocketConnector,而客户端采用NioSocketAcceptor

demo下载地址:http://download.csdn.net/download/btwangzhi/10003561