一:mina屏蔽了网络通信的一些细节,对sokcet进行封装,并且是NIO的一个实现框架,可以帮助我们快速的开发网络通信,
1.1:mima的工程流程
IOService接口
用户描述我们的客户端可服务端接口,其子类是connector和acceptor,分别用于描述我们的客户端和服务端IOproceser多线程环境来处理我们的连接请求流程
ioFilter提供数据的过来工作,包括编码,解码,日志等信息的过滤
Hanlder就是我们的业务对象,自定义的hanlder需要实现IOHandlerAcceptor。
1.2:mina的类结构
IOService :描述的是客户端和服务端连接的描述,常常用户接受和发送数据
1.2.1:执行过程
:
1.2.2:设计到的类
NIOSocketAcceptor 通信管理
IOseeeion :session管理
IoService:这个接口在一个线程上负责套接字的建立,拥有自己的Selector,监听是否有连接被建立。
IoProcessor:这个接口在另一个线程上,负责检查是否有数据在通道上读写,也就是说它也拥有自己的Selector,这是与我们使用JAVA NIO 编码时的一个不同之处,通常在JAVA NIO 编码中,我们都是使用一个Selector,也就是不区分IoService与IoProcessor 两个功能接口。另外,IoProcessor 负责调用注册在IoService 上的过滤器,并在过滤器链之后调用IoHandler。
IoFilter:这个接口定义一组拦截器,这些拦截器可以包括日志输出、黑名单过滤、数据的编码(write 方向)与解码(read 方向)等功能,其中数据的encode 与decode是最为重要的、也是你在使用Mina 时最主要关注的地方。
IoHandler:这个接口负责编写业务逻辑,也就是接收、发送数据的地方。
二:mina的长短连接
长连接:
客户端和服务端保持一个长时间连接状态, 所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持(不发生RST包和四次挥手)。
短连接:
短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接(管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段);
三:IOService接口介绍
3.1:IOService:
3.1.1: IOService 实现了网络通信额客户端和服务端之间的抽象,用于描述客户端额子接口IOConnector,用于描述服务端IOAcceptor
:3.1.2: IOService可以管理我们网络通信的客户端和服务端,并且可以管理双方回话,session同样可以添加过滤器。
3.1.3:IOService的类结构
通过扩展子接口和抽象子类达到扩展额目的
来源:CSDN
作者:托尼吴
链接:https://blog.csdn.net/weixin_41404773/article/details/103613235