掌桥专利:专业的专利平台
掌桥专利
首页

IOHandler类的继承、调用方法、服务器、终端设备及系统

文献发布时间:2023-06-19 11:19:16


IOHandler类的继承、调用方法、服务器、终端设备及系统

技术领域

本发明涉及互联网通信应用的技术领域,尤其涉及一种IOHandler类的继承、调用方法、服务器、终端设备及系统。

背景技术

随着互联网时代及移动通信时代的到来,人们日常生活的方方面面也越来越离不开互联网的支持。在互联网的信息交互场景中,逐渐延申出B/S(浏览器-服务器)架构和C/S(客户端-服务器)两种系统性通信架构方式。而基于以上两种通信架构的通信方式应用中,客户端或浏览器与服务器的请求方式在连接方式分为短连接和长连接两种,短连接是相对于长连接的通信方式,特点主要是建立连接的过程很短其仅进行单向请求,如基于http协议的请求;长连接是基于Socket套接字的请求,请求双方一般先会建立连接,以达到仅建立一次连接就可进行通信的目的,如TCP协议建立的连接。但在TCP协议基于一个线程对应一个客户端的调用方式中,大量线程创建和销毁的应用环境下,会导致通信连接时的连接速度下降,无法应对高并发量的访问,这样导致相关技术方案的适用场景存在局限性。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。

发明内容

本发明的主要目的在于提供一种IOHandler类的继承、调用方法、服务器、终端设备及系统,旨在提高TCP协议基于大量线程应用环境无法高并发量访问局限性。

为调用上述目的,本发明提供一种IOHandler类的继承方法,应用于服务器,包括以下内容:

在监听到终端设备的端口连接器部署作业时,连接所述终端设备;

接收所述终端设备发送的通信功能应用请求,并确定所述通信功能应用请求对应的IOHandler类;

创建所述IOHandler类与所述终端设备的继承关系,以使所述终端设备继承所述IOHandler类。

可选地,所述在监听到终端设备的端口连接器部署作业时,连接所述终端设备的步骤之前,还包括:

搭建Mina框架,并部署所述Mina框架的端口;

创建所述端口的监听器以监听所述端口。

可选地,所述搭建Mina框架的步骤,包括:

新建可继承的IOHandler类;

将所述IOHandler类挂载至所述Mina框架。

可选地,将所述IOHandler类挂载至所述Mina框架的步骤,包括:

在所述Mina架构新建Handler,将所述IOHandler类挂载至所述Handler。

为调用上述目的,本发明提供一种IOHandler类的调用方法,应用于终端设备,包括以下内容:

部署服务器端口的连接器以连接至所述服务器;

通过预设心跳类生成通信功能应用请求,向所述服务器发送所述通信功能应用请求;

获取所述服务器基于所述通信功能应用请求创建的IOHandler类继承关系,以所述IOHandler类继承关系调用所述IOHandler类。

可选地,所述部署服务器端口的连接器以连接至所述服务器的步骤之前,还包括:

搭建Mina框架客户端,并新建所述Mina框架客户端的连接器。

可选地,所述搭建Mina框架客户端的步骤,包括:

新建心跳类,将所述客户端心跳类挂载至所述Mina框架客户端;

通过已挂载的所述心跳类生成过滤器链。

此外,为实现上述目的,本发明还提供一种服务器,所述服务器包括:存储器、处理器以及存储在所述存储器上并可以在所述处理器上运行的IOHandler类的继承程序,所述IOHandler类的继承程序被处理器执行时调用如上所述的IOHandler类的继承方法的步骤。

本发明还提供一种终端设备,所述终端设备包括:存储器、处理器以及存储在所述存储器上并可以在所述处理器上运行的IOHandler类的继承程序,所述IOHandler类的继承程序被处理器执行时调用如上所述的IOHandler类的调用方法的步骤。

本发明还提供一种IOHandler类的继承系统,所述IOHandler类的继承系统包括如上服务器及如上所述的终端设备。

本发明提出的一种IOHandler类的继承方法,在监听到终端设备的端口连接器部署作业时,连接所述终端设备;接收所述终端设备发送的通信功能应用请求,并确定所述通信功能应用请求对应的IOHandler类;创建所述IOHandler类与所述终端设备的继承关系,以使所述终端设备继承所述IOHandler类。本发明通过通信模块继承调用的方式与业务逻辑分开的方式调用业务应用,功能扩展完全由业务逻辑模块代码完成,具体通信请求由mina控制,通过业务、通信分离调用通信应用避免了高并发量通信应用环境影响通信连接的有益效果。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的终端\装置结构示意图;

图2是本发明实施例方案涉及另一硬件运行环境的终端\装置结构示意图;

图3为本发明IOHandler类的继承方法第一实施例的流程示意图;

图4为本发明IOHandler类的继承方法第二实施例的流程示意图;

图5为本发明IOHandler类的调用方法第一实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例的主要解决方案是:监听连接端口,在监听到终端设备部署连接器时连接所述终端设备,所述连接端口包括一个或多个;接收所述终端设备的继承请求,确认所述继承请求对应的功能处理类;新建所述功能处理类与所述终端设备的继承关系。

现有两种系统性的架构方式B/S(浏览器-服务器)架构和C/S(客户端-服务器)架构实现客户端或浏览器与服务器的短连接和长连接,短连接是相对于长连接的通信方式在建立连接的过程很短其仅进行单向请求,而长连接基于Socket套接字的请求使得请求双方建立连接,以达到仅建立一次连接就可进行通信的目的。但TCP协议基于一个线程对应一个客户端的实现方式,大量的线程创建和销毁导致性能下降,无法应对高并发量的访问;不仅如此,TCP协议在处理较为复杂的业务逻辑时,对代码的封装不足会导致代码的耦合度太高,不利于功能拓展与项目优化。

本发明提供一种解决方案,采用Apache Mina通信框架,对Socket和NIO进行了有效和清晰的封装,方便开发程序,从而抛开在原始的Socket时需要考虑的问题线程、性能、会话等问题。在应用到电视/智能产品与服务端建立类Socket连接时实现了智能产品联网自更新数据解决了跨平台的问题,使服务端能够更快速、更精确的控制电视/智能产品;也使设备端能更快速的连接服务器获取交互信息,使得通信模块与具体的业务逻辑之间不互相影响,功能扩展完全由业务逻辑模块代码完成,具体的通信请求由mina控制,实现业务、通信分离,极大的降低代码耦合度。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端\装置结构示意图。

本发明实施例终端为具备程序运行的可移动式或不可移动式终端设备。

如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及IOHandler类的继承程序。

在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的IOHandler类的继承程序,并执行以下操作:

在监听到终端设备的端口连接器部署作业时,连接所述终端设备;

接收所述终端设备发送的通信功能应用请求,并确定所述通信功能应用请求对应的IOHandler类;

创建所述IOHandler类与所述终端设备的继承关系,以使所述终端设备继承所述IOHandler类。

进一步地,处理器1001可以调用存储器1005中存储的IOHandler类的继承程序,还执行以下操作:

搭建Mina框架,并部署所述Mina框架的端口;

创建所述端口的监听器以监听所述端口。

进一步地,处理器1001可以调用存储器1005中存储的IOHandler类的继承程序,还执行以下操作:

新建可继承的IOHandler类;

将所述IOHandler类挂载至所述Mina框架。

进一步地,处理器1001可以调用存储器1005中存储的IOHandler类的继承程序,还执行以下操作:

在所述Mina架构新建Handler,将所述IOHandler类挂载至所述Handler。

如图2所示,图2是本发明实施例方案涉及另一硬件运行环境的终端\装置结构示意图。

本发明实施例终端为具备程序运行的可移动式或不可移动式终端设备。

如图2所示,该终端可以包括:处理器2001,例如CPU,网络接口2004,用户接口2003,存储器2005,通信总线2002。图2中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。作为一种计算机存储介质的存储器2005中可以包括操作系统、网络通信模块、用户接口模块以及通信应用程序。

在图2所示的终端中,网络接口2004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口2003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器2001可以用于调用存储器2005中存储的通信应用程序,并执行以下操作:

部署服务器端口的连接器以连接至所述服务器;

通过预设心跳类生成通信功能应用请求,向所述服务器发送所述通信功能应用请求;

获取所述服务器基于所述通信功能应用请求创建的IOHandler类继承关系,以所述IOHandler类继承关系调用所述IOHandler类。

进一步地,处理器2001可以调用存储器2005中存储的通信应用程序,还执行以下操作:

搭建Mina框架客户端,并新建所述Mina框架客户端的连接器。

进一步地,处理器2001可以调用存储器2005中存储的通信应用程序,还执行以下操作:

新建心跳类,将所述客户端心跳类挂载至所述Mina框架客户端;

通过已挂载的所述心跳类生成过滤器链。

参照图3,图3为本发明IOHandler类的继承方法第一实施例的流程示意图,所述IOHandler类的继承方法包括:

步骤S10,在监听到终端设备的端口连接器部署作业时,连接所述终端设备;

基于当前终端设备的通信功能应用,服务器通过已部署的监听器监听当前待连接终端设备的连接器部署作业,其中,所述监听器所监听的位置为服务器已部署的连接端口,即所述终端设备在向所述服务器的端口部署连接器时,以所述监听器监听所述端口的状态,并在监听到所述端口有终端设备部署连接器时,创建与所述终端设备的连接关系,在所述服务器中,设有至少一个所述端口。基于当前实际应用的定义,以代码类形式定义,其监听器为服务器实例化的NioSocketAcceptor的一个对象Acceptor,根据所述NioSocketAcceptor于服务器端的定义以及方法功能,所述NioSocketAcceptor不仅继承了AbstractPollingIoAcceptor类,并实现了SocketAcceptor接口,因此,根据所述NioSocketAcceptor的方法功能应用,在mina架构中实例化NioSocketAcceptor的对象Acceptor作为设置监听通信端口以及端口监听应用。并且,所述终端设备在所述端口配置连接器时,所述连接器亦是与当前mina架构的SocketAcceptor接口对应的接口协议所定义的连接方案,以此使得所述终端设备通过连接器连接至所述服务器的连接端口,即与所述服务器创建通信连接关系。

步骤S20,接收所述终端设备发送的通信功能应用请求,并确定所述通信功能应用请求对应的IOHandler类;

根据当前与终端设备的通信连接关系,接收所述终端设备发送的通信功能应用请求,所述通信功能应用请求为基于终端设备当前的通信功能应用生成的请求信息,因此所述通信功能应用请求中包括基于当前通信功能的具体功能信息,以及通信功能应用时的功能性能等。根据接收到的所述通信功能应用请求,解析所述通信功能应用请求以确认所述通信功能应用请求对应的IOHandler类,在本发明优选实施例中,当前mina框架新建有IOHandler链,在所述IOHandler链中挂载有多个IOHandler类,并且,多个所述IOHandler类分别具备对应的通信功能,在所述mina框架中,服务器实例化的NioSocketAcceptor的对象Acceptor,在继承AbstractPollingIoAcceptor类,且实现SocketAcceptor接口,还可重写方法,其重写的方法包括设置过滤器链FilterChain、设置handle处理器、绑定端口等。而基于所述IOHandler链中挂载的IOHandler类,通过mina框架的顶层接口IOService实现的,即IOService是创建mina服务的顶层接口,无论是服务端还是设备端的通信连接应用,都是通过实现IOService实现的,所述IOService隐藏了底部的I/O细节,对外提供基于事件的异步接口。而根据当前IOHandler链所挂载的IOHandler类,以IOFilterChain方法提供过滤器链,用以对IOHandler链中挂载的IOHandler类进行过滤筛选,并通过继承来实现过滤器应用,因此在过滤器链中包含大部分mina支持的方法的前提下,以IOFilterChain方法进行IOHandler链的IOHandler类筛选得出所述通信功能应用请求对应的IOHandler类。

步骤S30,创建所述IOHandler类与所述终端设备的继承关系,以使所述终端设备继承所述IOHandler类。

根据当前已确定的IOHandler类型,创建所述IOHandler类与所述终端设备的继承关系,所述继承关系亦可定义为调用关系,以继承的形式使得所述终端设备调用所述IOHandler类实现功能应用,在程序应用中,所述继承是面向对象最显著的一个特性。其功能是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。如此,在创建所述IOHandler类与所述终端设备的继承关系后,所述终端设备可基于所述继承关系继承并调用所述IOHandler类实现对应的通信功能应用。

本实施例中,采用Apache Mina通信框架应用到电视/智能产品与服务端建立类Socket连接,通过通信模块继承调用的方式与业务逻辑分开的方式实现业务应用,功能扩展完全由业务逻辑模块代码完成,具体通信请求由mina控制,通过业务、通信分离实现通信应用避免了高并发量通信应用环境影响通信连接的有益效果。

进一步的,参照图4,图4为本发明IOHandler类的继承方法第二实施例的流程示意图,基于上述图3所示的第一实施例,所述在监听到终端设备的端口连接器部署作业时,连接所述终端设备的步骤之前,还包括:

步骤S40,搭建Mina框架,并部署所述Mina框架的端口;

步骤S50,创建所述端口的监听器以监听所述端口。

本实施例中,基于当前终端设备的通信应用需求,在服务器中搭建mina框架,所述mina框架亦定义为以mina搭建方式创建的数据应用平台,在所述mina框架中,以实例化NioSocketAcceptor对象Acceptor的方式实现SocketAcceptor端口实现终端设备的连接应用,并且通过在mina框架中对象Acceptor的监听得出终端设备的通信应用需求,在所述mina框架创建后,创建基于所述mina框架的IOHandler类,以便终端设备调用所述IOHandler类实现通信功能应用,即所述搭建Mina框架的步骤,包括:

新建可继承的IOHandler类;

将所述IOHandler类挂载至所述Mina框架。

在所述mina框架中,以IOService创建mina服务的顶层接口,通过所述顶层接口连接至所述mina框架中挂载的IOHandler类,在所述mina框架中,新建有多个不同功能的IOHandler类,所述IOHandler类在实现时通过挂载至mina框架实现调用,而所述IOHandler类在具备多个功能应用时,可包括但不限于基于以下所述的内容:

LoggingFilter,记录mina通信过程中所产生的日志;

ProtocolCodeFilter支持数据转化;

CompressionFilter支持数据压缩;

SSLFilter支持数据加密;

IOFilterAdapter可实现自定义过滤器;

并且,在所述mima框架中,以挂载的IOHandler类还需具备对应的触发方法类,而所述IOHandler类在挂载所述mian框架时,以IOHandler链的形式将挂载所述IOHandler类,即将所述IOHandler类挂载至所述Mina框架的步骤,包括:

在所述Mina架构新建Handler,将所述IOHandler类挂载至所述Handler。

根据当前mina框架的创建,通过IOFilterChain提供过滤器链挂载新建的IOHandler类,在所述Mina架构新建Handler,将所述IOHandler类挂载至所述Handler,即通过继承来实现过滤器,且过滤器链中包含大部分mina支持的方法。基于当前已搭建完成的过滤器链,涉及到过滤器链中已挂载IOHandler类的功能应用,还需在Handler中完成各种事件的触发机制设置,根据实际的IOHandler类的应用方案,IOHandler方法可包括以下几种触发方式:

exceptionCaught:接口中其他方法抛出异常被捕获时触发;

messageReceived:服务端接收到设备端请求信息后触发;

messageSent:消息已经传给设备端时触发;

sessionClosed:连接被关闭触发;

sessionCreated:一个新的设备端连接后触发;

sessionOpend:建立连接后打开session时触发;

sessionIdel:连接空闲时触发;

mina将消息业务处理单独用Handler来处理,无论是服务器还是客户端,都可以继承IOHandlerAdapter,再根据具体的需求重写方法。

参照图5,图5为本发明IOHandler类的调用方法第一实施例的流程示意图,所述IOHandler类的调用方法还包括:

步骤S60,部署服务器端口的连接器以连接至所述服务器;

步骤S70,通过预设心跳类生成通信功能应用请求,向所述服务器发送所述通信功能应用请求;

步骤S80,获取所述服务器基于所述通信功能应用请求创建的IOHandler类继承关系,以所述IOHandler类继承关系调用所述IOHandler类。

本实施例中,在当前有终端设备的通信应用需求时,部署服务器端口的连接器,以所述连接器连接至服务器,其中,所述服务器具备至少一个所述端口,因此,根据当前终端设备的功能应用,选取其中一个端口进行连接器部署,在选取所述端口时,其选取方式可基于所述终端设备应用的通信协议或者通信类型等相关的设备参数进行所述端口的选取,以上,建立在所述端口具备对应接口协议的前提下实现。在通过所述端口已连接至所述服务器后,根据当前的通信功能应用需求生成通信功能应用请求,其中,在以所述通信功能应用需求生成所述通信功能应用请求时,还需基于所述通信功能应用需求的具体通信功能确定对应的心跳类,以所述心跳类以及所述通信功能应用需求生成所述通信功能请求发送至所述服务器,在通信应用领域,所述心跳类,为指在工业装置设备监测中,主服务器与各设备之间通过周期性发送信息,判断设备的健康状况,判断对方是否“存活”。

根据已向服务器发送的通信功能应用请求,获取所述服务器基于所述通信功能应用请求创建的IOHandler类继承关系,其中,在所述服务器已创建基于所述通信功能应用请求对应IOHandler类继承关系后,可能会下发基于所述IOHandler类继承关系的相关信息,以便所述终端设备确定可通过所述IOHandler类继承关系应用所述IOHandler类实现对应的通信功能应用。如此,根据当前通信功能应用需求,获取所述服务器创建的IOHandler类继承关系,通过所述IOHandler类继承关系调用所述IOHandler类实现对应的通信功能应用。

以上,在实现服务器IOHandler类继承关系实现通信功能应用前提为,当前终端设备具备与所述服务器中mina框架对应的mina框架客户端,以便实现IOHandler类的继承调用,因此,所述部署服务器端口的连接器以连接至所述服务器的步骤之前,还包括:

搭建Mina框架客户端,并新建所述Mina框架客户端的连接器。

根据当前终端设备的通信功能应用,在所述终端设备中创建mina框架客户端,根据所要连接服务器的mina框架类型,所述mina框架客户端的mina模块采用客户端mina搭建方式。在所述mina框架客户端中实例化NioSocketConnector类的对象,以所述NioSocketConnector类的实例化对象建立与服务器mina框架的连接。另外,在所述终端设备的mina框架客户端中设置KeepAliveFilter过滤器,以该过滤器KeepAliveFilter过滤器用于在服务器mina框架的I/O空闲时发送并反馈心跳包,而基于所述心跳包的应用,需在所述mina框架客户端中创建具备对应功能的心跳包以向服务器发送,即所述搭建Mina框架客户端的步骤,包括:

新建客户端心跳类,将所述客户端心跳类挂载至所述Mina框架客户端;

通过已挂载的所述心跳类生成过滤器链。

根据当前终端应用的通信功能应用,在所述终端设备中搭建的mina框架客户端中新建客户端心跳类,并将所述心跳类挂载至所述mina框架客户端,,而基于所述心跳类的挂载以及筛选应用,在已挂载所述心跳类后,以所述心跳类的挂载形式组成过滤器链实现所述心跳类的筛选以及相关应用,涉及到所述心跳类的功能应用,所述心跳类接口的形式实现应用,而与所述心跳类相关的接口有KeepAliveMessageFactory,用于判断接收或发送的包是否为心跳包以及心跳包的定义实现;IdleStatus用于该过滤器关注的空闲状态,在空闲状态时发送心跳包;KeepAliveRequestTimeoutHandle,用于心跳包请求后无响应的超时反馈机制,一般为关闭当前连接。

以上,根据已挂载的心跳类,在处理设备因网络问题暂时离线时,也可保证在网络恢复时即刻连接服务器获取所需数据或请求。

并且,在实现所述心跳类的应用时,通过KeepAliveMessageFactory接口,重写相关方法;并以getRequest(),请求预设信息,也是收到请求后发送的信息;getResponse():响应预设信息,收到响应后发送的信息;isRequest():判断接收到的信息是否为心跳请求包;isResponse():判断接收到的信息是否为心跳响应包。涉及到当前已创建并挂载的心跳类,基于以上方法类所已实现的心跳类,还需要定义心跳机制,常见的心跳机制包括以下类型:

active活跃型:读通道空闲时发送心跳请求,一旦发送,必须在预设超时时间内收到已发送心跳包的反馈,否则超时处理机制将会启动;而当请求包被发送至服务器后,服务器的心跳反馈也会立即发出;

semi-active半活跃型:只是在读通道空闲时发送心跳请求,不在乎有无心跳反馈;本发明设备端采用半活跃型心跳机制;

passive被动型:当前I/O不希望主动发送心跳请求,但是当接收到一个心跳包后,反馈也会立即发出;本发明服务端采用被动型心跳机制;

deaf-speaker聋子型:当前I/O主动发送心跳请求,但是不想发送任何心跳反馈;

sient-listener持续监听型:不想发送任何心跳请求与心跳反馈。

此外,本发明实施例还提出一种IOHandler类的继承系统,所述IOHandler类的继承系统在执行时实现如上所示的IOHandler类的继承方法实施例及如上所示的IOHandler类的调用方法实施例的技术内容。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、药品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、药品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、药品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • IOHandler类的继承、调用方法、服务器、终端设备及系统
  • 一种分布式系统的调用方法、装置、终端设备及服务器
技术分类

06120112881005