本发明专利技术涉及一种基于长连接的套接字同步方法,具体包括以下步骤:步骤1:接口模块将配置信息存入内存,并与外部服务器建立连接;步骤2:接收内部服务器发送的内部请求;步骤3:将内部请求和请求参数存入外部通讯链表;步骤4:接收外部服务器返回的返回报文,得出报文对应的内部请求;步骤5:将返回报文转换为替换报文,并将替换报文通过对应的内部请求的socket套接字端口发送至内部服务器。本发明专利技术可以通过端口轮询的方法,使所有交易不需要等待上一笔交易的返回,避免通讯程序空闲等待,极大提高通讯程序的处理效率;可避免通讯程序处于空闲等待状态,充分利用端口资源。大幅提高长连接同步通讯时接口程序的处理效率。
【技术实现步骤摘要】
本专利技术涉及。
技术介绍
长连接指在一个连接上可以连续发送多个数据包,然后断开连接,在连接保持期间,如果没有数据包发送,需要双方发链路检测包,如图1所示。发送接收方式1、异步报文发送和接收是分开的,相互独立的,互不影响。这种方式又分两种情况(I)异步双工接收和发送·在同一个程序中,由两个不同的子进程分别负责发送和接收;(2)异步单工接收和发送是用两个不同的程序来完成。2、同步报文发送和接收是同步进行,既报文发送后等待接收替换报文。同步方式一般需要考虑超时问题,即报文发出去后不能无限等待,需要设定超时时间,超过该时间发送方不再等待读替换报文,直接通知超时返回。在长连接中一般是没有条件能够判断读写什么时候结束,所以必须要加长度报文头。读函数先是读取报文头的长度,再根据这个长度去读相应长度的报文。在同步方式通讯下,因为报文发送后需要等待替换报文,所以效率较低,大部分时间都浪费在等待返回上。尤其是在某笔交易超时的情况下,会造成后续所有交易都在等待,这种情况会导致通讯程序处于空闲等待现象,且通讯效率较低。
技术实现思路
本专利技术所要解决的技术问题是,针对现有技术的不足,提供一种在长连接通讯模式下,大幅提高长连接同步通讯时接口程序的处理效率基于长连接的套接字同步方法。本专利技术解决上述技术问题的技术方案如下,具体包括以下步骤步骤1:接口模块将配置信息存入内存,并与外部服务器建立连接;步骤2 :接收内部服务器发送的内部请求,每个内部请求产生对应的唯一的请求参数,将内部请求和请求参数存入内部请求通讯链表,形成请求报文;步骤3 :将内部请求和请求参数存入外部通讯链表,并将请求报文发送至外部服务器;步骤4:接收外部服务器返回的返回报文,将所述报文与外部通讯链表中的请求参数对比,得出报文对应的内部请求;步骤5 :将返回报文转换为替换报文,并将替换报文通过对应的内部请求的socket套接字端口发送至内部服务器。本专利技术的有益效果是本专利技术可以通过端口轮询的方法,使所有交易不需要等待上一笔交易的返回,避免通讯程序空闲等待,极大提高通讯程序的处理效率;可避免通讯程序处于空闲等待状态,充分利用端口资源。大幅提高长连接同步通讯时接口程序的处理效率。在上述技术方案的基础上,本专利技术还可以做如下改进。进一步,所述步骤I中与外部服务器建立的连接为长连接。进一步,所述步骤I中所述的的配置信息包括日志路径、对端地址、端口、登录口令和命令配置文件路径的配置。进一步,所述2具体包括以下步骤步骤2.1 :判断是否有内部请求连接,如果有,则接收内部请求,并继续下一步;否则,休眠一定时间后,继续判断是否有内部请求连接;步骤2.2 :解析请求的业务编码,接收准备发向外部服务器所需要的请求串,并参数对应每个请求的唯一的请求参数;步骤2. 3 :将请求和请求参数存入内部请求通讯链表中,并替换请求的内部参数,形成具体的发向外部服务器的请求报文。进一步,所述步骤2. 3中的请求报文的格式为key=value键名称格式,请求的内部参数替换是将key键替换成value值。进一步,所述步骤4具体包括以下步骤步骤4.1 :遍历外部通讯链表,判断是否需要发送心跳信息,如果是,发送心跳信息,并返回继续遍历外部通讯链表;否则,接收外部服务器的返回报文,并继续下一步;步骤4. 2 :判断外部服务器的返回报文是否为心跳包,如果是,则忽略此报文,跳转至步骤4.1 ;否则,继续下一步;步骤4.3 :将返回报文与外部通讯链表中的请求参数进行比较,找到该报文所对应的内部请求。进一步,所述步骤5具体包括以下步骤步骤5.1 :将返回报文通过参数截取操作,转换为替换报文;步骤5. 2 :查询出对应报文的内部请求的socket套接字端口 ;步骤5. 3 :将替换报文通过socket套接字端口发送至内部服务器。进一步,所述步骤4. 3中所述返回报文中包含报文数据和唯一对应的请求参数,所述返回报文中的请求参数与内部请求的请求参数相同时,所述报文与所述内部请求相对应。其中心跳信息为一种定时检测信息,例如服务器和客户端之间进行通讯,每隔5分钟进行一次心跳检测,检测和主站连接是否正常。客户端每5分钟发一个心跳检测数据帧,服务器接收到数据帧表示通过,否则表示客户端断开,抛出异常。 定义内部通讯的消息结构体的具体操作如下struct ReqConnID{intconnID; ---内部请求连接socket描述符t ime_tbeg;---请求开始时间charopcode [4];---业务操作编码inttotallen; ---消息长度intwaits end; ---请求发送标识MML*mmlptr; ---向外部发送的消息结构体指针time-treqtime; ---发向服务器的intsessionID; ---维持长连接的会话IDinttransID; ---外部识别的交易流水I n tcmd ID; ---外部识别的命令IDintanother; /** O:还有其他数据包,1:没有其他数据包**/struct ReqConnID * next;定义外部通讯的消息结构体。struct SmpConnID{intconnID;---请求外部连接socket描述符11 me tbeg;---请求开始时间mtsessionID;---通讯会话 IDintms glen; ---消息长度time treqtime; ---消息请求时间charsrvname [32];---交易服务名称charusername [32];---登录用户名charuserpswd [32];---登录密码chartermID [32]; —终端标识struct SmpConnID *next;附图说明 图1为长连接处理流程图;图2为本专利技术具体实施例1所述的流程图;图3为长连接处理流程的详细图示图;图4为本专利技术具体实施例2所述的流程图。具体实施例方式以下结合附图对本专利技术的原理和特征进行描述,所举实例只用于解释本专利技术,并非用于限定本专利技术的范围。如图2所示,本专利技术具体实施例1所述的,具体包括以下步骤,具体包括以下步骤步骤1:接口模块将配置信息存入内存,并与外部服务器建立连接;步骤2:判断是否有内部请求连接,如果有,则接收内部请求,并继续下一步;否则,休眠一定时间后,继续判断是否有内部请求连接;步骤3 :解析请求的业务编码,接收准备发向外部服务器所需要的请求串,并参数对应每个请求的唯一的请求参数;步骤4 :将请求和请求参数存入内部请求通讯链表中,并替换请求的内部参数,形成具体的发向外部服务器的请求报文。步骤5 :将内部请求和请求参数存入外部通讯链表,并将请求报文发送至外部服务器;步骤6 :遍历外部通讯链表,判断是否需要发送心跳信息,如果是,发送心跳信息,并返回继续遍历外部通讯链表;否则,接收外部服务器的返回报文,并继续下一步;步骤7 :判断外部服务器的返回报文是否为心跳包,如果是,则忽略此报文,跳转至步骤6;否则,继续下一步;步骤8 :将返回报文与外部通讯链表中的请求参数进行比较,找到该报文所对应的内部请求。步骤9 :将返回报文通过参数截取操作,转换为替换报文;步骤10 :查询出对应报文的内部请求的socket套接字端口 ;步骤11 :将本文档来自技高网...
【技术保护点】
一种基于长连接的套接字同步方法,其特征在于,具体包括以下步骤:步骤1:接口模块将配置信息存入内存,并与外部服务器建立连接;步骤2:接收内部服务器发送的内部请求,每个内部请求产生对应的唯一的请求参数,将内部请求和请求参数存入内部请求通讯链表,形成请求报文;步骤3:将内部请求和请求参数存入外部通讯链表,并将请求报文发送至外部服务器;步骤4:接收外部服务器返回的返回报文,将所述报文与外部通讯链表中的请求参数对比,得出报文对应的内部请求;步骤5:将返回报文转换为替换报文,并将替换报文通过对应的内部请求的socket套接字端口发送至内部服务器。
【技术特征摘要】
1.一种基于长连接的套接字同步方法,其特征在于,具体包括以下步骤 步骤1:接ロ模块将配置信息存入内存,并与外部服务器建立连接; 步骤2 :接收内部服务器发送的内部请求,每个内部请求产生对应的唯一的请求參数,将内部请求和请求參数存入内部请求通讯链表,形成请求报文; 步骤3 :将内部请求和请求參数存入外部通讯链表,并将请求报文发送至外部服务器; 步骤4 :接收外部服务器返回的返回报文,将所述报文与外部通讯链表中的请求參数对比,得出报文对应的内部请求; 步骤5 :将返回报文转换为替换报文,并将替换报文通过对应的内部请求的socket套接字端ロ发送至内部服务器。2.根据权利要求1所述的ー种基于长连接的套接字同步方法,其特征在于,所述步骤1中与外部服务器建立的连接为长连接。3.根据权利要求2所述的ー种基于长连接的套接字同步方法,其特征在于,所述步骤1中所述的的配置信息包括日志路径、对端地址、端ロ、登录ロ令和命令配置文件路径的配置。4.根据权利要求3所述的ー种基于长连接的套接字同步方法,其特征在于,所述2具体包括以下步骤 步骤2.1 :判断是否有内部请求连接,如果有,则接收内部请求,并继续下一歩;否则,休眠一定时间后,继续判断是否有内部请求连接; 步骤2.2 :解析请求的业务编码,接收准备发向外部服务器所需要的请求串,并參数对应姆个请求的唯一的请求參数; 步骤2.3 :将请求和请求參数存入内部请求通讯链...
【专利技术属性】
技术研发人员:张厚瑞,
申请(专利权)人:北京思特奇信息技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。