一种网络通讯的方法及装置与流程

文档序号:16848767发布日期:2019-02-12 22:33阅读:137来源:国知局
一种网络通讯的方法及装置与流程
本发明涉及数据处理领域,尤其涉及一种网络通讯的方法及装置。
背景技术
:银行系统之间的链接模式非常多样化,链接模式包括单工、双工、主动、被动。现有技术中,不同的系统采用不同链接模式实现通讯链接,这样会增加很多的开发和维护工作。且随着安全传输要求的提高,数据加密传输越来越成为现有通讯程序的基本要求。目前需要设计一套能够同时兼容不同链接类型和建联模式并满足安全传输要求的通讯系统。技术实现要素:本发明实施例提供一种网络通讯的方法及装置,可以同时兼容不同链接类型和建联模式并满足安全传输要求。本发明实施例提供的一种网络通讯的方法,包括:获取会话session,所述session包括所述session的配置信息和所述session的函数指针;根据所述session的配置信息初始化所述session的函数指针;根据初始化后的所述session的函数指针调用所述session的函数指针指向的函数。上述技术方案中,根据session的配置信息初始化session的函数指针,并调用初始化session的函数指针指向的函数,即根据不同的session的配置信息调用相对应的函数,这样可以同时兼容不同session的配置信息下的链接类型和建联模式,并满足安全传输要求。可选的,所述session包括链接对,在所述根据初始化后的所述session的函数指针调用所述session的函数指针指向的函数之后,还包括:基于反应器reactor模式对所述session的链接对进行管理。可选的,所述基于reactor模式对所述session的链接对进行管理,包括:当有数据待读取时,将待读取的数据发送至环形接收缓冲区;判断所述环形接收缓冲区的所述待读取的数据是否符合数据通讯协议,若是,则处理所述环形接收缓冲区的所述待读取的数据;否则,重新判断所述环形接收缓冲区的所述待读取的数据是否符合所述数据通讯协议,直至确定所述环形接收缓冲区的所述待读取的数据符合所述数据通讯协议之后,处理所述环形接收缓冲区的所述待读取的数据;当有数据待发送时,将待发送的数据发送至环形发送缓冲区;判断外部网络是否堵塞,若是,则重新判断所述外部网络是否堵塞,直至确定所述外部网络不堵塞之后,将所述环形发送缓冲区中的所述待发送的数据写入所述外部网络;否则,直接将所述环形发送缓冲区中的所述待发送的数据写入所述外部网络。上述技术方案中,通过reactor模式对session中的连接对进行管理,实现网络事件检测的异步模式以及网络事件操作的异步模式,减少了数据不规范或不完整对系统的影响,使系统运行更加稳定,进而解决链接对之间的相互影响。可选的,所述session的配置信息包括下述信息之一或任意组合:session的id(identity,身份标识号)、出链接句柄、入链接句柄、链接类型、建联模式、数据协议、安全传输协议;其中,所述session的id储存在内存中,所述内存用于管理预设数量的session。上述技术方案中,session的配置信息包括session的id、出链接句柄、入链接句柄、链接类型、建联模式、数据协议以及安全传输协议,根据不同的session的配置信息调用相对应的函数,相当于根据不同的链接类型、建联模式、数据协议以及安全传输协议调用相对应的函数,即可以兼容不同链接类型、建联模式、数据协议以及安全传输协议。同时,设置单独的内存用于存储session的id,从而实现大量session的管理,也就实现大量链接对的管理。相应的,本发明实施例还提供了一种网络通讯的装置,包括:获取单元,用于获取session,所述session包括所述session的配置信息和所述session的函数指针;第一处理单元,用于根据所述session的配置信息初始化所述session的函数指针;第二处理单元,用于根据初始化后的所述session的函数指针调用所述session的函数指针指向的函数。可选的,所述session包括链接对,在所述根据初始化后的所述session的函数指针调用所述session的函数指针指向的函数之后,所述第二处理单元还用于:基于reactor模式对所述session的链接对进行管理。可选的,第二处理单元具体用于:当有数据待读取时,将待读取的数据发送至环形接收缓冲区;判断所述环形接收缓冲区的所述待读取的数据是否符合数据通讯协议,若是,则处理所述环形接收缓冲区的所述待读取的数据;否则,重新判断所述环形接收缓冲区的所述待读取的数据是否符合所述数据通讯协议,直至确定所述环形接收缓冲区的所述待读取的数据符合所述数据通讯协议之后,处理所述环形接收缓冲区的所述待读取的数据;当有数据待发送时,将待发送的数据发送至环形发送缓冲区;判断外部网络是否堵塞,若是,则重新判断所述外部网络是否堵塞,直至确定所述外部网络不堵塞之后,将所述环形发送缓冲区中的所述待发送的数据写入所述外部网络;否则,直接将所述环形发送缓冲区中的所述待发送的数据写入所述外部网络。可选的,所述session的配置信息包括下述信息之一或任意组合:session的id、出链接句柄、入链接句柄、链接类型、建联模式、数据协议、安全传输协议;其中,所述session的id储存在内存中,所述内存用于管理预设数量的session。相应的,本发明实施例还提供了一种计算设备,包括:存储器,用于存储程序指令;处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述网络通讯的方法。相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述网络通讯的方法。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种系统架构的示意图;图2为本发明实施例提供的一种网络通讯方法的流程示意图;图3为本发明实施例提供的一种session分配给工作线程的示意图;图4为本发明实施例提供的一种管理链接对的示意图;图5为本发明实施例提供的一种网络通讯装置的结构示意图。具体实施方式为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构可以为服务器100,包括处理器110、通信接口120和存储器130。其中,处理器110是服务器100的控制中心,利用各种接口和线路连接整个服务器100的各个部分,通过运行或执行存储在存储器130内的软件程序/或模块,以及调用存储在存储器130内的数据,执行服务器100的各种功能和处理数据。可选地,处理器110可以包括一个或多个处理单元。通信接口120用于通信,为银行系统之间提供通信。存储器130可用于存储软件程序以及模块,处理器110通过运行存储在存储器130的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器130可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据业务处理所创建的数据等。此外,存储器130可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。基于上述描述,图2示例性的示出了本发明实施例提供的一种网络通讯的方法的流程,该流程可以由网络通讯的装置执行,该装置可以位于服务器中,可以是该服务器。如图2所示,该流程具体包括:步骤201,获取session。此处,session包括session的配置信息、session的函数指针以及session的链接对,其中链接对即为出链接和入链接,也可以说链接对包括两个socket句柄。本发明实施例中,为了监控链接模式中的单工模式和双工模式,可以将单工模式和双工模式均视为两个socket句柄,其中,双工模式的两个socket句柄是相同的,单工模式的两个socket句柄是不同的。将两个socket句柄以及相关配置信息封装为一个session。具体的,session的配置信息包括下述信息之一或任意组合:session的身份标识号id、出链接句柄、入链接句柄、链接类型、建联模式、数据协议、安全传输协议,具体可以如表1所示。其中,session的id(session_id)是一个session的编号,根据session的id对session的进行管理。表1序号属性类型1session_id数值型2出链接句柄数值型3入链接句柄数值型4链接类型数值型5建联模式数值型6数据协议数值型7安全传输数值型在根据session的id管理session时,作为本发明的一种可实现方式,可以将session的id储存在内存中,该内存用于管理预设数量的session。具体的,一个session的id占用1个bit位,该bit位的值可以取1或0,当该bit位的值为1时,表示该bit位对应的session已经被分配,当该bit位的值为0时,表示该bit位对应的session未被分配。例如,用于存储session的id的内存大小为1mb,则该1mb的内存可以存储8388608个session的id,相当于可以管理8388608个session,也就是管理16777216个socket句柄。步骤202,根据所述session的配置信息初始化所述session的函数指针;将获取到的session分配给线程池的某一个工作线程中,具体可以如图3所示。工作线程为session的管理者,根据session中的配置信息加载session。为了使session可以支持所有的链接类型和建联模式并满足安全传输要求,需要将session所有操作全部抽象化为函数指针,具体如表2所示。表2函数指针功能描述open_session_in()打开监听端口open_session_out()主动发起与外部的连接load_data_protocol()加载通讯协议load_ssl_certificate()加载安装通讯证书ssl_shake_hand()建立ssl安全线路read_session_data()session中读取网络数据send_session_data()将数据通过session发送到网络中根据session的配置信息初始化session的函数指针可以理解为,通过上述抽象出的函数指针向用户提供统一的函数接口,并根据session的配置信息初始化该session的函数指针。步骤203,根据初始化后的所述session的函数指针调用所述session的函数指针指向的函数。此处,根据初始化后的session的函数指针调用session的函数指针指向的函数,从而实现不同的功能。这样可以实现通讯模式的自适应性,即实现兼容不同链接类型和建联模式并满足安全传输要求。在根据初始化后的session的函数指针调用session的函数指针指向的函数之后,工作线程还可以基于reactor模式对session的链接对进行管理。每个session通过内部的环形队列与应用层进行解耦。当有数据待读取时,将待读取的数据发送至环形接收缓冲区,判断环形接收缓冲区的待读取的数据是否符合数据通讯协议,若是,则处理环形接收缓冲区的待读取的数据。否则,重新判断环形接收缓冲区的待读取的数据是否符合数据通讯协议,直至确定环形接收缓冲区的待读取的数据符合数据通讯协议之后,处理环形接收缓冲区的待读取的数据。当有数据待发送时,将待发送的数据发送至环形发送缓冲区,判断外部网络是否堵塞,若是,则重新判断外部网络是否堵塞,直至确定外部网络不堵塞之后,将环形发送缓冲区中的待发送的数据写入外部网络;否则,直接将环形发送缓冲区中的待发送的数据写入外部网络。为了更好的解释上述实施例,可以参照图4所示。通过异步模式检测到有数据待读取时,将待读取的数据发送至环形接收缓冲区,此过程中不检测待读取的数据是否满足数据通讯协议,这样即使收到的待读取的数据为不完整数据,也不会导致工作线程的堵塞。当存储在环形接收缓冲区中的上述待读取的数据被读取时,则启动数据分析事件,判断上述待读取的数据是否符合数据通讯协议,若符合,则通知应用处理线程处理该数据。若不符合,则不做任何处理,即继续保留在环形接收缓冲区中,重新判断上述待读取的数据是否符合数据通讯协议,直至符合后,通知应用处理线程处理该数据。此处,应用处理线程可以理解为使用方或用户的线程。这样保证了网络交互的异步性,通讯数据的处理不会影响正常的网络交互。通过异步模式检测到有数据待发送时,将待发送的数据发送至环形发送缓冲区。当存储在环形发送缓冲区中的上述待读取的数据被发送时,若外部网络未堵塞,则直接将该数据写入外部网络;当由于数据量过大或其他原因导致外部网络堵塞时,则重新判断外部网络是否发生堵塞直至确定不堵塞时,也就是通过异步模式检测到外部网络可以再次写入数据时,则再次向外部网络写入该数据。上述实施例中,通过初始化session的函数指针,并根据初始化后的session的函数指针调用函数,可以同时兼容不同链接类型和建联模式并满足安全传输要求,同时实现有益效果:(1)将session的id储存在内存中以实现对大量session的管理,即管理海量链接对;(2)基于reactor模式对session的链接对进行管理,实现网络事件检测异步以及网络数据操作异步,彻底解决海量链接时相互影响的问题,提高网络通讯的稳定性。基于同一发明构思,图5示例性的示出了本发明实施例提供的一种网络通讯的装置的结构,该装置可以执行网络通讯的方法的流程。获取单元501,用于获取session,所述session包括所述session的配置信息和所述session的函数指针;第一处理单元502,用于根据所述session的配置信息初始化所述session的函数指针;第二处理单元503,用于根据初始化后的所述session的函数指针调用所述session的函数指针指向的函数。可选的,所述session包括链接对,所述第二处理单元503还用于:基于reactor模式对所述session的链接对进行管理。可选的,第二处理单元503具体用于:当有数据待读取时,将待读取的数据发送至环形接收缓冲区;判断所述环形接收缓冲区的所述待读取的数据是否符合数据通讯协议,若是,则处理所述环形接收缓冲区的所述待读取的数据;否则,重新判断所述环形接收缓冲区的所述待读取的数据是否符合所述数据通讯协议,直至确定所述环形接收缓冲区的所述待读取的数据符合所述数据通讯协议之后,处理所述环形接收缓冲区的所述待读取的数据;当有数据待发送时,将待发送的数据发送至环形发送缓冲区;判断外部网络是否堵塞,若是,则重新判断所述外部网络是否堵塞,直至确定所述外部网络不堵塞之后,将所述环形发送缓冲区中的所述待发送的数据写入所述外部网络;否则,直接将所述环形发送缓冲区中的所述待发送的数据写入所述外部网络。可选的,所述session的配置信息包括下述信息之一或任意组合:session的身份标识号id、出链接句柄、入链接句柄、链接类型、建联模式、数据协议、安全传输协议;其中,session的id储存在内存中,所述内存用于管理预设数量的session。基于同一发明构思,本发明实施例还提供了一种计算设备,包括:存储器,用于存储程序指令;处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述网络通讯的方法。基于同一发明构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述网络通讯的方法。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1