CN114237937A - 一种多线程的数据传输方法和装置 - Google Patents
一种多线程的数据传输方法和装置 Download PDFInfo
- Publication number
- CN114237937A CN114237937A CN202111554240.2A CN202111554240A CN114237937A CN 114237937 A CN114237937 A CN 114237937A CN 202111554240 A CN202111554240 A CN 202111554240A CN 114237937 A CN114237937 A CN 114237937A
- Authority
- CN
- China
- Prior art keywords
- data
- data packet
- server
- received data
- message queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本发明公开了一种多线程的数据传输方法和装置,涉及通信连接的坐席主控服务器和多个控制客户端,坐席主控服务器和控制客户端均包括有套接字接口,方法包括:实时监听各个套接字接口;当监听到任一套接字接口接收到接收数据时,将接收数据缓存至套接字接口关联的消息队列;通过消息队列对应的消息队列线程依次读取消息队列内的接收数据并解析,确定接收数据的数据类型;若数据类型为配置指令数据,则根据接收数据构建目标服务器数据包并发送至坐席主控服务器;若数据类型为响应数据,则对接收数据进行协议头封装,生成目标客户端数据包并返回至控制客户端,从而在提高数据处理效率的同时,实现响应超时提醒。
Description
技术领域
本发明涉及多线程的数据传输技术领域,尤其涉及一种多线程的数据传输方法和装置。
背景技术
随着音视频技术的高速发展,越来越多的工作场合开始使用分布式坐席系统来进行远程调度、分区管控,如各单位的指挥中心、会议室等,其中较多应用场景一般采用网络部署,通过控制软件对坐席系统中的各类设备进行统一配置管理,主要涉及的业务包括从坐席主控服务器获取已有的相关资源、接收客户端下发的各种配置命令并分析处理、将预处理后的命令发送给坐席主控服务器进行管理配置等。
目前实现上述功能的主要方案通常是启动一个线程,创建epoll句柄监听多个socket的数据接收情况;当监听到某个socket上有可读数据时,接收相应消息数据,即时分析处理;若接收到的数据是响应类型,则将其保存在缓存中,并上报给客户端;若接收到的数据是配置命令类型,则将预处理后的命令转发给坐席主控服务器进行相关设置;在进行客户端下发的命令转发配置的时候,同步等待坐席主控服务器返回的成功或失败响应消息。
但上述方案随着坐席主控服务器资源急剧增多,同时用户在控制客户端上频繁进行操作,需要系统同时响应多个控制客户端的数据需求时,上述方案的处理效率较低,且不存在客户端或坐席主控服务器响应超时提醒。
发明内容
本发明提供了一种多线程的数据传输方法和装置,解决了现有技术随着坐席主控服务器资源急剧增多,同时用户在控制客户端上频繁进行操作,需要系统同时响应多个控制客户端的数据需求时,上述方案的处理效率较低,且不存在客户端或坐席主控服务器响应超时提醒的技术问题。
本发明提供的一种多线程的数据传输方法,涉及通信连接的坐席主控服务器和多个控制客户端,所述坐席主控服务器和所述控制客户端均包括有套接字接口,所述方法包括:
实时监听各个所述套接字接口;
当监听到任一所述套接字接口接收到接收数据时,将所述接收数据缓存至所述套接字接口关联的消息队列;
通过所述消息队列对应的消息队列线程依次读取所述消息队列内的接收数据并解析,确定所述接收数据的数据类型;
若所述数据类型为配置指令数据,则根据所述接收数据构建所述目标服务器数据包并发送至所述坐席主控服务器;
若所述数据类型为响应数据,则对所述接收数据进行协议头封装,生成目标客户端数据包并返回至所述控制客户端。
可选地,所述方法还包括:
响应于输入的监听请求,创建epoll句柄;
将各个所述套接字接口分别注册至所述epoll句柄,创建监听线程;其中,所述监听线程用于实时监听各个所述套接字接口。
可选地,所述若所述数据类型为配置指令数据,则根据所述接收数据构建所述目标服务器数据包并发送至所述坐席主控服务器的步骤,包括:
若所述数据类型为配置指令数据,则对所述配置指令数据包进行协议头封装,生成目标服务器数据包;
采用所述目标服务器数据包携带的协议会话ID作为主键,将指令类型和返回值状态作为键值,构建映射关系信息;
将所述映射关系信息逐一缓存至所述坐席主控服务器对应的映射队列;
发送所述目标服务器数据包至所述坐席主控服务器。
可选地,所述方法还包括:
通过所述消息队列线程获取所述接收数据携带的应用场景标识,按照所述应用场景标识确定对应的超时时间;
通过所述消息队列线程轮询所述映射队列内的所述映射关系信息;
若所述映射关系信息内的返回值状态在所述超时时间内未被更新,则将超时未处理信息作为新的接收数据并返回至所述套接字接口
若所述映射关系信息内的返回值状态在所述超时时间内被更新,则基于更新后的返回值状态生成新的接收数据并返回至所述套接字接口。
可选地,所述坐席主控服务器包括服务器处理线程;所述服务器处理线程用于:
读取所述目标服务器数据包对应的数据包协议会话ID和数据包指令类型;
判断数据包协议会话ID是否存在于所述映射队列;
若是,则从所述映射队列获取对应的映射关系信息,判断所述映射关系信息内的指令类型是否与所述数据包指令类型一致;
若一致,则按照所述目标服务器数据包执行配置,并基于配置结果更新所述返回值状态。
本发明还提供了一种多线程的数据传输装置,涉及通信连接的坐席主控服务器和多个控制客户端,所述坐席主控服务器和所述控制客户端均包括有套接字接口,所述装置包括:
监听模块,用于实时监听各个所述套接字接口;
接收数据缓存模块,用于当监听到任一所述套接字接口接收到接收数据时,将所述接收数据缓存至所述套接字接口关联的消息队列;
数据类型确定模块,用于通过所述消息队列对应的消息队列线程依次读取所述消息队列内的接收数据并解析,确定所述接收数据的数据类型;
配置指令数据处理模块,用于若所述数据类型为配置指令数据,则根据所述接收数据构建所述目标服务器数据包并发送至所述坐席主控服务器;
响应数据处理模块,用于若所述数据类型为响应数据,则对所述接收数据进行协议头封装,生成目标客户端数据包并返回至所述控制客户端。
可选地,所述装置还包括:
句柄创建模块,用于响应于输入的监听请求,创建epoll句柄;
监听线程创建模块,用于将各个所述套接字接口分别注册至所述epoll句柄,创建监听线程;其中,所述监听线程用于实时监听各个所述套接字接口。
可选地,所述配置指令数据处理模块包括:
数据封装子模块,用于若所述数据类型为配置指令数据,则对所述配置指令数据包进行协议头封装,生成目标服务器数据包;
映射关系信息构建子模块,用于采用所述目标服务器数据包携带的协议会话ID作为主键,将指令类型和返回值状态作为键值,构建映射关系信息;
映射关系信息缓存子模块,用于将所述映射关系信息逐一缓存至所述坐席主控服务器对应的映射队列;
封装数据包发送子模块,用于发送所述目标服务器数据包至所述坐席主控服务器。
可选地,所述装置还包括:
超时时间确定模块,用于通过所述消息队列线程获取所述接收数据携带的应用场景标识,按照所述应用场景标识确定对应的超时时间;
信息轮询模块,用于通过所述消息队列线程轮询所述映射队列内的所述映射关系信息;
状态未更新处理模块,用于若所述映射关系信息内的返回值状态在所述超时时间内未被更新,则将超时未处理信息作为新的接收数据并返回至所述套接字接口
状态已更新处理模块,用于若所述映射关系信息内的返回值状态在所述超时时间内被更新,则基于更新后的返回值状态生成新的接收数据并返回至所述套接字接口。
可选地,所述坐席主控服务器包括服务器处理线程;所述服务器处理线程用于:
读取所述目标服务器数据包对应的数据包协议会话ID和数据包指令类型;
判断数据包协议会话ID是否存在于所述映射队列;
若是,则从所述映射队列获取对应的映射关系信息,判断所述映射关系信息内的指令类型是否与所述数据包指令类型一致;
若一致,则按照所述目标服务器数据包执行配置,并基于配置结果更新所述返回值状态。
从以上技术方案可以看出,本发明具有以下优点:
本发明通过实时监听各个套接字接口;当监听到任一套接字接口接收到接收数据时,将接收数据缓存至套接字接口关联的消息队列;通过消息队列对应的消息队列线程依次读取消息队列内的接收数据并解析,确定接收数据的数据类型;若数据类型为配置指令数据,则根据接收数据构建目标服务器数据包并发送至坐席主控服务器;若数据类型为响应数据,则对接收数据进行协议头封装,生成目标客户端数据包并返回至控制客户端。从而通过多线程多消息队列设置,使得坐席主控服务器能够同时响应多个控制客户端的数据需求,从而在提高数据处理效率的同时,还可以进行响应超时提醒。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例一提供的一种多线程的数据传输方法的步骤流程图;
图2为本发明实施例二提供的一种多线程的数据传输方法的步骤流程图;
图3为本发明实施例三提供的一种多线程的数据传输装置的结构框图。
具体实施方式
本发明实施例提供了一种多线程的数据传输方法和装置,用于解决现有技术随着坐席主控服务器资源急剧增多,同时用户在控制客户端上频繁进行操作,需要系统同时响应多个控制客户端的数据需求时,上述方案的处理效率较低,且不存在客户端或坐席主控服务器响应超时提醒的技术问题。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,图1为本发明实施例一提供的一种多线程的数据传输方法的步骤流程图。
本发明提供的一种多线程的数据传输方法,涉及通信连接的坐席主控服务器和多个控制客户端,坐席主控服务器和控制客户端均包括有套接字接口,方法包括:
步骤101,实时监听各个套接字接口;
套接字接口指的是Socket,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。
在本发明实施例中,坐席主控服务器和控制客户端均设有对应的套接字接口,在坐席主控服务器和多个控制客户端建立通信连接后,可以通过预先创建的监听线程对全部套接字接口进行监听,以判断套接字接口是否接收到接收数据。
步骤102,当监听到任一套接字接口接收到接收数据时,将接收数据缓存至套接字接口关联的消息队列;
接收数据指的是套接字接口接收到的数据,可以包括但不限于控制客户端发送的配置指令数据,以及坐席主控服务器返回的响应数据等。
在本发明实施例中,每个套接字接口均关联有一个消息队列,当监听到任一套接字接口接收到接收数据时,为便于后续对接收数据的处理,可以将接收数据缓存至套接字接口关联的消息队列进行存储。
步骤103,通过消息队列对应的消息队列线程依次读取消息队列内的接收数据并解析,确定接收数据的数据类型;
当接收数据缓存至各个消息队列后,传统的处理方法是通过单个线程对消息队列内的接收数据进行逐一读取,响应效率较低。为此,在本实施例中每个消息队列均设有对应的消息队列线程,通过各自的消息队列线程对消息队列内的接收数据进行读取并解析,从而确定接收数据对应的数据类型,以为后续发送目标提供数据基础。
步骤104,若数据类型为配置指令数据,则根据接收数据构建目标服务器数据包并发送至坐席主控服务器;
在具体实现中,若是数据类型为配置指令数据,则表明此时接收数据是从某一控制客户端发送至某一坐席主控服务器,此时可以根据接收数据内的协议会话ID、指令类型等信息进行映射关系信息的构建,并封装为对应的目标服务器数据包,发送目标服务器数据包至坐席主控服务器。
需要说明的是,坐席主控服务器在接收到目标服务器数据包,可以响应目标服务器数据包进行服务器的配置,无论是配置成功与否,均会返回新的接收数据至套接字接口。而由于套接字接口间处于一一对应关系,当套接字接口接收到新的接收数据后,再次执行步骤101-103,判断数据类型是否属于响应数据。
步骤105,若数据类型为响应数据,则对接收数据进行协议头封装,生成目标客户端数据包并返回至控制客户端。
若是判定数据类型为响应数据,则表明该接收数据是坐席主控服务器返回的数据,此时可以对接收数据进行协议头封装,以转换至控制客户端所适配的数据协议,生成目标客户端数据包并经套接字接口返回至控制客户端。
在本发明实施例中,通过实时监听各个套接字接口;当监听到任一套接字接口接收到接收数据时,将接收数据缓存至套接字接口关联的消息队列;通过消息队列对应的消息队列线程依次读取消息队列内的接收数据并解析,确定接收数据的数据类型;若数据类型为配置指令数据,则根据接收数据构建目标服务器数据包并发送至坐席主控服务器;若数据类型为响应数据,则对接收数据进行协议头封装,生成目标客户端数据包并返回至控制客户端。从而通过多线程多消息队列设置,使得坐席主控服务器能够同时响应多个控制客户端的数据需求,从而在提高数据处理效率的同时,还可以进行响应超时提醒。
请参阅图2,图2为本发明实施例二提供的一种多线程的数据传输方法的步骤流程图。
本发明提供的一种多线程的数据传输方法,涉及通信连接的坐席主控服务器和多个控制客户端,坐席主控服务器和控制客户端均包括有套接字接口,方法包括:
步骤201,实时监听各个套接字接口;
在本发明实施例中,步骤201的具体实施过程与步骤101类似,在此不再赘述。
可选地,在执行步骤201之前,本方法还可以包括以下步骤:
响应于输入的监听请求,创建epoll句柄;
将各个套接字接口分别注册至epoll句柄,创建监听线程;其中,监听线程用于实时监听各个套接字接口。
在本发明的一个示例中,在初次建立坐席主控服务器和多个控制客户端的通信连接的同时,还可以响应用户输入的监听请求,创建对应的epoll句柄。同时将各个套接字接口socket分别注册至epoll句柄,从而创建监听线程进行后续套接字接口的数据接收事件的实时监听。
值得一提的是,当出现新的控制客户端或坐席主控服务器时,还可以在epoll句柄重新注册新的套接字接口,从而实现对新增设备的数据接收事件的监听。
其中,epoll句柄指的是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的水平触发(Level Triggered)外,还提供了边缘触发(Edge Triggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait/epoll_pwait的调用,提高应用程序效率。
步骤202,当监听到任一套接字接口接收到接收数据时,将接收数据缓存至套接字接口关联的消息队列;
步骤203,通过消息队列对应的消息队列线程依次读取消息队列内的接收数据并解析,确定接收数据的数据类型;
在本发明实施例中,步骤202-203的具体实现过程与步骤102-103类似,在此不再赘述。
步骤204,若数据类型为配置指令数据,则对配置指令数据包进行协议头封装,生成目标服务器数据包;
配置指令数据指的是控制客户端发送的,用于对坐席主控服务器进行配置,或是从坐席主控服务器中调用资源等的指令数据。
在本发明的一个示例中,若数据类型为配置指令数据,表明此时需要对坐席主控服务器进行配置,此时可以为配置指令数据包添加对应的协议头进行封装,生成对应的目标服务器数据包。
步骤205,采用目标服务器数据包携带的协议会话ID作为主键,将指令类型和返回值状态作为键值,构建映射关系信息;
在完成对目标服务器数据包的封装后,可以进一步采用目标服务器数据包所携带的协议会话ID作为主键,键值设置为指令类型和返回值状态,以此构建映射关系信息。
步骤206,将映射关系信息逐一缓存至坐席主控服务器对应的映射队列;
在得到映射关系信息后,为便于后续坐席主控服务器的服务器处理线程的处理,可以将映射关系信息逐一缓存至坐席主控服务器所对应的映射队列。
步骤207,发送目标服务器数据包至坐席主控服务器;
与此同时,把目标服务器数据包发送至坐席主控服务器。
进一步地,坐席主控服务器包括服务器处理线程;服务器处理线程用于:
读取目标服务器数据包对应的数据包协议会话ID和数据包指令类型;
判断数据包协议会话ID是否存在于映射队列;
若是,则从映射队列获取对应的映射关系信息,判断映射关系信息内的指令类型是否与数据包指令类型一致;
若一致,则按照目标服务器数据包执行配置,并基于配置结果更新返回值状态。
在本发明的一个示例中,坐席主控服务器包括服务器处理线程,可以通过服务器处理线程对目标服务器数据包内的数据包协议会话ID和数据包指令类型进行读取,同时检索映射队列,以判断是否查找到与数据包协议会话ID相同的协议会话ID;若是存在,则可以获取对应的映射关系信息,进一步判断映射关系信息内的指令类型是否与数据包指令类型一致,若是一致则可以按照目标服务器数据包执行对坐席主控服务器的配置,例如服务器配置或是客户端资源的获取等。
在配置完成后,坐席主控服务器会生成对应的配置结果告知配置成功或配置失败,此时服务器处理线程可以基于配置成功或配置失败的配置结果,对返回值状态进行更新。例如配置成功则可以将返回值状态置1,配置失败则可以将返回值状态置0。
可选地,在坐席主控服务器接收到目标服务器数据包后,本方法还可以包括以下步骤S11-S14:
S11、通过消息队列线程获取接收数据携带的应用场景标识,按照应用场景标识确定对应的超时时间;
S12、通过消息队列线程轮询映射队列内的映射关系信息;
S13、若映射关系信息内的返回值状态在超时时间内未被更新,则将超时未处理信息作为新的接收数据并返回至套接字接口
S14、若映射关系信息内的返回值状态在超时时间内被更新,则基于更新后的返回值状态生成新的接收数据并返回至套接字接口。
在具体实现中,控制客户端可能存在多种不同的应用场景,例如银行、普通办公场所、住所等,每个应用场景由于使用方式的不同,所允许的超时时间也不同。
此时可以为每个应用场景设有对应的应用场景标识,在坐席主控服务器接收到目标服务器数据包后,先通过消息队列线程获取接收数据携带的应用场景标识,按照应用场景标识确定在该应用场景下所允许的超时时间,通过消息队列线程轮询映射队列内的映射关系信息,判断在超时时间内该映射关系信息是否被更新。
若在超时时间内已更新,则可以根据更新后的返回值状态生成代表该配置过程的新的接收数据并返回至套接字接口,通过套接字接口返回至对应的控制客户端。若在超时时间内未更新,则可以将超时未处理信息作为新的接收数据返回至套接字接口,通过套接字接口返回至对应的控制客户端,从而告知坐席主控服务器对该接收数据超时未处理,从而,确保消息上报和配置命令处理的即时性,有效地提高了控制软件的数据处理能力,保证控制客户端使用的流畅度,显著提升用户的操作体验。
步骤208,若数据类型为响应数据,则对接收数据进行协议头封装,生成目标客户端数据包并返回至控制客户端。
若是判定数据类型为响应数据,则表明该接收数据是坐席主控服务器返回的数据,此时可以对接收数据进行协议头封装,以转换至控制客户端所适配的数据协议,生成目标客户端数据包并经套接字接口返回至控制客户端。
在本发明实施例中,通过实时监听各个套接字接口;当监听到任一套接字接口接收到接收数据时,将接收数据缓存至套接字接口关联的消息队列;通过消息队列对应的消息队列线程依次读取消息队列内的接收数据并解析,确定接收数据的数据类型;若数据类型为配置指令数据,则根据接收数据构建目标服务器数据包并发送至坐席主控服务器;若数据类型为响应数据,则对接收数据进行协议头封装,生成目标客户端数据包并返回至控制客户端。从而通过多线程多消息队列设置,使得坐席主控服务器能够同时响应多个控制客户端的数据需求,从而在提高数据处理效率的同时,还可以进行响应超时提醒。
请参阅图3,图3为本发明实施例三提供的一种多线程的数据传输装置的结构框图。
本发明还提供了一种多线程的数据传输装置,涉及通信连接的坐席主控服务器和多个控制客户端,坐席主控服务器和控制客户端均包括有套接字接口,装置包括:
监听模块301,用于实时监听各个套接字接口;
接收数据缓存模块302,用于当监听到任一套接字接口接收到接收数据时,将接收数据缓存至套接字接口关联的消息队列;
数据类型确定模块303,用于通过消息队列对应的消息队列线程依次读取消息队列内的接收数据并解析,确定接收数据的数据类型;
配置指令数据处理模块304,用于若数据类型为配置指令数据,则根据接收数据构建目标服务器数据包并发送至坐席主控服务器;
响应数据处理模块305,用于若数据类型为响应数据,则对接收数据进行协议头封装,生成目标客户端数据包并返回至控制客户端。
可选地,装置还包括:
句柄创建模块,用于响应于输入的监听请求,创建epoll句柄;
监听线程创建模块,用于将各个套接字接口分别注册至epoll句柄,创建监听线程;其中,监听线程用于实时监听各个套接字接口。
可选地,配置指令数据处理模块304包括:
数据封装子模块,用于若数据类型为配置指令数据,则对配置指令数据包进行协议头封装,生成目标服务器数据包;
映射关系信息构建子模块,用于采用目标服务器数据包携带的协议会话ID作为主键,将指令类型和返回值状态作为键值,构建映射关系信息;
映射关系信息缓存子模块,用于将映射关系信息逐一缓存至坐席主控服务器对应的映射队列;
封装数据包发送子模块,用于发送目标服务器数据包至坐席主控服务器。
可选地,装置还包括:
超时时间确定模块,用于通过消息队列线程获取接收数据携带的应用场景标识,按照应用场景标识确定对应的超时时间;
信息轮询模块,用于通过消息队列线程轮询映射队列内的映射关系信息;
状态未更新处理模块,用于若映射关系信息内的返回值状态在超时时间内未被更新,则将超时未处理信息作为新的接收数据并返回至套接字接口
状态已更新处理模块,用于若映射关系信息内的返回值状态在超时时间内被更新,则基于更新后的返回值状态生成新的接收数据并返回至套接字接口。
可选地,坐席主控服务器包括服务器处理线程;服务器处理线程用于:
读取目标服务器数据包对应的数据包协议会话ID和数据包指令类型;
判断数据包协议会话ID是否存在于映射队列;
若是,则从映射队列获取对应的映射关系信息,判断映射关系信息内的指令类型是否与数据包指令类型一致;
若一致,则按照目标服务器数据包执行配置,并基于配置结果更新返回值状态。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、模块和子模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种多线程的数据传输方法,其特征在于,涉及通信连接的坐席主控服务器和多个控制客户端,所述坐席主控服务器和所述控制客户端均包括有套接字接口,所述方法包括:
实时监听各个所述套接字接口;
当监听到任一所述套接字接口接收到接收数据时,将所述接收数据缓存至所述套接字接口关联的消息队列;
通过所述消息队列对应的消息队列线程依次读取所述消息队列内的接收数据并解析,确定所述接收数据的数据类型;
若所述数据类型为配置指令数据,则根据所述接收数据构建所述目标服务器数据包并发送至所述坐席主控服务器;
若所述数据类型为响应数据,则对所述接收数据进行协议头封装,生成目标客户端数据包并返回至所述控制客户端。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于输入的监听请求,创建epoll句柄;
将各个所述套接字接口分别注册至所述epoll句柄,创建监听线程;其中,所述监听线程用于实时监听各个所述套接字接口。
3.根据权利要求1所述的方法,其特征在于,所述若所述数据类型为配置指令数据,则根据所述接收数据构建所述目标服务器数据包并发送至所述坐席主控服务器的步骤,包括:
若所述数据类型为配置指令数据,则对所述配置指令数据包进行协议头封装,生成目标服务器数据包;
采用所述目标服务器数据包携带的协议会话ID作为主键,将指令类型和返回值状态作为键值,构建映射关系信息;
将所述映射关系信息逐一缓存至所述坐席主控服务器对应的映射队列;
发送所述目标服务器数据包至所述坐席主控服务器。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
通过所述消息队列线程获取所述接收数据携带的应用场景标识,按照所述应用场景标识确定对应的超时时间;
通过所述消息队列线程轮询所述映射队列内的所述映射关系信息;
若所述映射关系信息内的返回值状态在所述超时时间内未被更新,则将超时未处理信息作为新的接收数据并返回至所述套接字接口;
若所述映射关系信息内的返回值状态在所述超时时间内被更新,则基于更新后的返回值状态生成新的接收数据并返回至所述套接字接口。
5.根据权利要求3或4所述的方法,其特征在于,所述坐席主控服务器包括服务器处理线程;所述服务器处理线程用于:
读取所述目标服务器数据包对应的数据包协议会话ID和数据包指令类型;
判断数据包协议会话ID是否存在于所述映射队列;
若是,则从所述映射队列获取对应的映射关系信息,判断所述映射关系信息内的指令类型是否与所述数据包指令类型一致;
若一致,则按照所述目标服务器数据包执行配置,并基于配置结果更新所述返回值状态。
6.一种多线程的数据传输装置,其特征在于,涉及通信连接的坐席主控服务器和多个控制客户端,所述坐席主控服务器和所述控制客户端均包括有套接字接口,所述装置包括:
监听模块,用于实时监听各个所述套接字接口;
接收数据缓存模块,用于当监听到任一所述套接字接口接收到接收数据时,将所述接收数据缓存至所述套接字接口关联的消息队列;
数据类型确定模块,用于通过所述消息队列对应的消息队列线程依次读取所述消息队列内的接收数据并解析,确定所述接收数据的数据类型;
配置指令数据处理模块,用于若所述数据类型为配置指令数据,则根据所述接收数据构建所述目标服务器数据包并发送至所述坐席主控服务器;
响应数据处理模块,用于若所述数据类型为响应数据,则对所述接收数据进行协议头封装,生成目标客户端数据包并返回至所述控制客户端。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
句柄创建模块,用于响应于输入的监听请求,创建epoll句柄;
监听线程创建模块,用于将各个所述套接字接口分别注册至所述epoll句柄,创建监听线程;其中,所述监听线程用于实时监听各个所述套接字接口。
8.根据权利要求6所述的装置,其特征在于,所述配置指令数据处理模块包括:
数据封装子模块,用于若所述数据类型为配置指令数据,则对所述配置指令数据包进行协议头封装,生成目标服务器数据包;
映射关系信息构建子模块,用于采用所述目标服务器数据包携带的协议会话ID作为主键,将指令类型和返回值状态作为键值,构建映射关系信息;
映射关系信息缓存子模块,用于将所述映射关系信息逐一缓存至所述坐席主控服务器对应的映射队列;
封装数据包发送子模块,用于发送所述目标服务器数据包至所述坐席主控服务器。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
超时时间确定模块,用于通过所述消息队列线程获取所述接收数据携带的应用场景标识,按照所述应用场景标识确定对应的超时时间;
信息轮询模块,用于通过所述消息队列线程轮询所述映射队列内的所述映射关系信息;
状态未更新处理模块,用于若所述映射关系信息内的返回值状态在所述超时时间内未被更新,则将超时未处理信息作为新的接收数据并返回至所述套接字接口;
状态已更新处理模块,用于若所述映射关系信息内的返回值状态在所述超时时间内被更新,则基于更新后的返回值状态生成新的接收数据并返回至所述套接字接口。
10.根据权利要求8或9所述的装置,其特征在于,所述坐席主控服务器包括服务器处理线程;所述服务器处理线程用于:
读取所述目标服务器数据包对应的数据包协议会话ID和数据包指令类型;
判断数据包协议会话ID是否存在于所述映射队列;
若是,则从所述映射队列获取对应的映射关系信息,判断所述映射关系信息内的指令类型是否与所述数据包指令类型一致;
若一致,则按照所述目标服务器数据包执行配置,并基于配置结果更新所述返回值状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111554240.2A CN114237937A (zh) | 2021-12-17 | 2021-12-17 | 一种多线程的数据传输方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111554240.2A CN114237937A (zh) | 2021-12-17 | 2021-12-17 | 一种多线程的数据传输方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114237937A true CN114237937A (zh) | 2022-03-25 |
Family
ID=80758312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111554240.2A Pending CN114237937A (zh) | 2021-12-17 | 2021-12-17 | 一种多线程的数据传输方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237937A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174296A (zh) * | 2022-05-30 | 2022-10-11 | 青岛海尔科技有限公司 | 设备功能接入方法、装置、存储介质及电子装置 |
CN116112536A (zh) * | 2022-12-30 | 2023-05-12 | 广州通康创智软件有限公司 | 一种tcp-串口通信透传的方法及装置 |
CN116597855A (zh) * | 2023-07-18 | 2023-08-15 | 深圳市则成电子股份有限公司 | 自适应降噪的方法、装置和计算机设备 |
CN116708597A (zh) * | 2023-08-04 | 2023-09-05 | 新华三技术有限公司 | 一种数据处理方法及装置 |
CN117061393A (zh) * | 2023-10-10 | 2023-11-14 | 北京集度科技有限公司 | 测试系统、测试方法及计算机程序产品 |
-
2021
- 2021-12-17 CN CN202111554240.2A patent/CN114237937A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174296A (zh) * | 2022-05-30 | 2022-10-11 | 青岛海尔科技有限公司 | 设备功能接入方法、装置、存储介质及电子装置 |
CN115174296B (zh) * | 2022-05-30 | 2024-03-22 | 青岛海尔科技有限公司 | 设备功能接入方法、装置、存储介质及电子装置 |
CN116112536A (zh) * | 2022-12-30 | 2023-05-12 | 广州通康创智软件有限公司 | 一种tcp-串口通信透传的方法及装置 |
CN116597855A (zh) * | 2023-07-18 | 2023-08-15 | 深圳市则成电子股份有限公司 | 自适应降噪的方法、装置和计算机设备 |
CN116597855B (zh) * | 2023-07-18 | 2023-09-29 | 深圳市则成电子股份有限公司 | 自适应降噪的方法、装置和计算机设备 |
CN116708597A (zh) * | 2023-08-04 | 2023-09-05 | 新华三技术有限公司 | 一种数据处理方法及装置 |
CN116708597B (zh) * | 2023-08-04 | 2023-10-24 | 新华三技术有限公司 | 一种数据处理方法及装置 |
CN117061393A (zh) * | 2023-10-10 | 2023-11-14 | 北京集度科技有限公司 | 测试系统、测试方法及计算机程序产品 |
CN117061393B (zh) * | 2023-10-10 | 2024-01-09 | 北京集度科技有限公司 | 测试系统、测试方法及计算机程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114237937A (zh) | 一种多线程的数据传输方法和装置 | |
US10838777B2 (en) | Distributed resource allocation method, allocation node, and access node | |
US20210342170A1 (en) | Acceleration management node, acceleration node, client, and method | |
US9537786B2 (en) | Method, device, and system for information processing based on distributed buses | |
CN106161537B (zh) | 远程过程调用的处理方法、装置、系统及电子设备 | |
KR20220079958A (ko) | 블록체인 메시지 처리 방법 및 장치, 컴퓨터 및 판독 가능한 저장 매체 | |
US9705752B2 (en) | Reliably updating a messaging system | |
CN113326155B (zh) | 一种信息处理方法、装置、系统和存储介质 | |
US9104488B2 (en) | Support server for redirecting task results to a wake-up server | |
US9323591B2 (en) | Listening for externally initiated requests | |
WO2021159831A1 (zh) | 编程平台的用户代码运行方法及平台、节点、设备、介质 | |
WO2021051881A1 (zh) | Vpp 集群管理方法及装置、计算机设备及存储介质 | |
US8458702B1 (en) | Method for implementing user space up-calls on java virtual machine before/after garbage collection | |
CN111200606A (zh) | 深度学习模型任务处理方法、系统、服务器及存储介质 | |
CN110247812A (zh) | 一种多集群管理方法、装置、系统及相关组件 | |
CN112104679B (zh) | 处理超文本传输协议请求的方法、装置、设备和介质 | |
WO2020082839A1 (zh) | 报文处理方法、相关设备及计算机存储介质 | |
US10523746B2 (en) | Coexistence of a synchronous architecture and an asynchronous architecture in a server | |
CN111835809B (zh) | 工单消息分配方法、装置、服务器及存储介质 | |
CN110266787B (zh) | 一种混合云管理系统、方法及计算机设备 | |
CN111586140A (zh) | 一种数据交互的方法及服务器 | |
WO2020252724A1 (zh) | 日志处理方法、设备及计算机可读存储介质 | |
CN113452948B (zh) | 会议终端的控制方法、装置、设备及存储介质 | |
CN108781215B (zh) | 网络服务实现方法、服务控制器及通信系统 | |
WO2020259326A1 (zh) | 一种信号传输方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |