本公开涉及通信,尤其涉及一种进程间数据传输方法、装置、设备和存储介质。
背景技术:
1、设备进程间通信主要采用共享内存和套接字来实现,对于使用套接字的通信,主要通过在进程要使用时定义新套接字来实现,并且单个进程可能存在单个或者多个套接字用来通信,容易造成系统资源的浪费,在设备功能迭代过程中,资源将会越来越少,存在耗尽的风险。
技术实现思路
1、有鉴于此,本公开实施例提供了一种进程间数据传输方法、装置、设备和存储介质,能够降低套接字的使用数量,达到降低系统资源消耗的目的。
2、第一方面,本公开实施例提供了一种进程间数据传输方法,用于客户端侧,采用如下技术方案:
3、进程间数据传输方法包括:
4、在发送进程启动后,获取与发送进程的标识信息对应的客户端队列号;
5、根据获取到的客户端队列号,将传输数据和目标接收进程的标识信息存放至对应的客户端队列;
6、遍历所有客户端队列,将各客户端队列中的数据取出并通过客户端套接字发送至服务端,所有客户端队列共用一个客户端套接字进行数据发送。
7、在第一方面的一种可能的实施方式中,发送进程的标识信息为n以内的数字序号,n由需要基于客户端套接字进行数据传输的进程总数确定,获取与发送进程的标识信息对应的客户端队列号,包括:对发送进程的标识信息和客户端队列总数进行取余计算,得到第一余数,将第一余数作为与发送进程的标识信息对应的客户端队列号。
8、在第一方面的一种可能的实施方式中,每个客户端队列包括多个队列元素,将各客户端队列中的数据取出并通过客户端套接字发送至服务端,包括:对各客户端队列中存放有数据的队列元素进行分别读取,得到多条数据;按照预设格式将多条数据组装成一条数据;将组装后的数据通过客户端套接字发送至服务端。
9、在第一方面的一种可能的实施方式中,该方法还包括:创建客户端套接字、客户端队列以及客户端监控进程;其中,客户端队列包括环形队列,客户端监控进程用于遍历所有客户端队列,将各客户端队列中的数据取出并通过客户端套接字发送至服务端。
10、第二方面,本公开实施例提供一种进程间数据传输方法,用于服务端侧,该方法包括:
11、通过服务端套接字接收客户端数据;
12、从接收到的数据中提取目标接收进程的标识信息和传输数据;
13、获取与目标接收进程的标识信息对应的服务端队列号;
14、根据获取到的服务端队列号,将传输数据存放至对应的服务端队列;
15、在接收进程启动后,获取与接收进程的标识信息对应的服务端队列号;
16、根据获取到的服务端队列号,从对应的服务端队列中读取通信数据。
17、在第一方面的一种可能的实施方式中,从接收到的数据中提取接收进程的标识信息和传输数据,包括:对接收到的数据进行格式解析,得到解析后数据;从解析后数据中提取进程标识信息和传输数据。
18、在第一方面的一种可能的实施方式中,目标接收进程的标识信息为m以内的数字序号,m由需要基于服务端套接字进行数据传输的进程总数确定,获取与目标接收进程的标识信息对应的服务端队列号,包括:对目标接收进程的标识信息和服务端队列总数进行取余计算,得到第二余数,将第二余数作为与接收进程的标识信息对应的服务端队列号。
19、在第一方面的一种可能的实施方式中,接收进程的标识信息为m以内的数字序号,m由需要基于服务端套接字进行数据传输的进程总数确定,获取与接收进程的标识信息对应的服务端队列号,包括:对接收进程的标识信息和服务端队列总数进行取余计算,得到第三余数,将第三余数作为与接收进程的标识信息对应的服务端队列号。
20、在第一方面的一种可能的实施方式中,该方法还包括:创建服务端套接字和服务端队列;其中,服务端队列包括环形队列。
21、第三方面,本公开实施例提供一种进程间数据传输装置,用于客户端侧,该装置包括:
22、第一获取模块,用于在发送进程启动后,获取与发送进程的标识信息对应的客户端队列号;
23、第一存放模块,用于根据获取到的客户端队列号,将传输数据和目标接收进程的标识信息存放至对应的客户端队列;
24、发送模块,用于遍历所有客户端队列,将各客户端队列中的数据取出并通过客户端套接字发送至服务端,所有客户端队列共用一个客户端套接字进行数据发送。
25、第四方面,本公开实施例提供一种进程间数据传输装置,用于服务端侧,该装置包括:
26、接收模块,用于通过服务端套接字接收客户端数据;
27、提取模块,用于从接收到的数据中提取目标接收进程的标识信息和传输数据;
28、第二获取模块,用于获取与目标接收进程的标识信息对应的服务端队列号;
29、第二存放模块,用于根据获取到的服务端队列号,将传输数据存放至对应的服务端队列;
30、第三获取模块,用于在接收进程启动后,获取与接收进程的标识信息对应的服务端队列号;
31、读取模块,用于根据获取到的服务端队列号,从对应的服务端队列中读取通信数据。
32、第五方面,本公开实施例提供一种电子设备,该电子设备包括:
33、至少一个处理器;以及,
34、与至少一个处理器通信连接的存储器;其中,
35、存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述进程间数据传输方法。
36、第六方面,本公开实施例提供一种计算机可读存储介质,该计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行上述的进程间数据传输方法。
37、本公开实施例中的用于客户端的进程间数据传输方法,先获取与发送进程的标识信息对应的客户端队列号,然后根据获取到的客户端队列号,将传输数据和目标接收进程的标识信息存放至对应的客户端队列;再遍历所有客户端队列,将各客户端队列中的数据取出并通过客户端套接字发送至服务端,所有客户端队列共用一个客户端套接字进行数据发送。
38、由于所有客户端队列共用一个客户端套接字进行数据发送,即客户端所在设备的多个发送进程可以仅通过一个套接字进行数据发送,与现有技术中的每个发送进程需要新定义套接字,或者一个发送进程对应一个或者多个套接字来进行通信相比,本方法降低套接字的使用数量,能够有效降低系统资源消耗,尤其是对于套接字使用频率低的多核系统,能够显著地降低系统的资源浪费。
39、上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
1.一种进程间数据传输方法,用于客户端侧,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述发送进程的标识信息为n以内的数字序号,n由需要基于客户端套接字进行数据传输的进程总数确定,所述获取与发送进程的标识信息对应的客户端队列号,包括:
3.根据权利要求1所述的方法,其特征在于,每个客户端队列包括多个队列元素,所述将各客户端队列中的数据取出并通过客户端套接字发送至服务端,包括:
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
5.一种进程间数据传输方法,用于服务端侧,其特征在于,包括:
6.根据权利要求5所述的方法,其特征在于,所述从接收到的数据中提取接收进程的标识信息和传输数据,包括:
7.根据权利要求5所述的方法,其特征在于,所述目标接收进程的标识信息为m以内的数字序号,m由需要基于服务端套接字进行数据传输的进程总数确定,所述获取与所述目标接收进程的标识信息对应的服务端队列号,包括:
8.根据权利要求5所述的方法,其特征在于,所述接收进程的标识信息为m以内的数字序号,m由需要基于服务端套接字进行数据传输的进程总数确定,所述获取与接收进程的标识信息对应的服务端队列号,包括:
9.根据权利要求5所述的方法,其特征在于,所述方法还包括:
10.一种进程间数据传输装置,用于客户端侧,其特征在于,所述装置包括:
11.一种进程间数据传输装置,用于服务端侧,其特征在于,包括:
12.一种电子设备,其特征在于,所述电子设备包括:
13.一种计算机可读存储介质,其特征在于,该计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行权利要求1-4任一所述的进程间数据传输方法,或者权利要求5-9任一所述的进程间数据传输方法。