CN109086144A - 一种进程之间的通信方法和装置 - Google Patents
一种进程之间的通信方法和装置 Download PDFInfo
- Publication number
- CN109086144A CN109086144A CN201710449251.1A CN201710449251A CN109086144A CN 109086144 A CN109086144 A CN 109086144A CN 201710449251 A CN201710449251 A CN 201710449251A CN 109086144 A CN109086144 A CN 109086144A
- Authority
- CN
- China
- Prior art keywords
- message
- length
- bit
- message header
- target
- 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.)
- Granted
Links
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- 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
-
- 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/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/70—Services for machine-to-machine communication [M2M] or machine type communication [MTC]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例提供了一种进程之间的通信方法和装置,所述方法包括:第一进程获取待发送的原始消息;原始消息包括:消息头和消息体;第一进程确定待发送的原始消息的消息头的长度,以及消息体的长度;第一进程依据消息头的长度以及消息体的长度,压缩消息头的长度,得到压缩消息;第一进程将所述压缩消息添加到针对第二进程预先创建的消息队列中,第二进程用于从消息队列中获取压缩消息。在本申请实施例中,任意两个进程的在通过消息队列进行消息收发的过程中,发送方进程根据待发送的原始消息的消息体的长度和消息头的长度,对消息头进行压缩处理,删除消息头中不需要表示消息体长度的字节,减少压缩头的长度。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种进程之间的通信方法和一种进程之间的通信装置。
背景技术
在工业领域中,为了减少设备的成本的投入,会对设备的硬件资源设有较大的限制。
例如,在物联网IoT(Internet of Things)领域中,物联网设备的硬件资源非常有限。如何在较小的硬件资源条件下,满足操作系统OS(Operating System,)的开销已经成为亟待解决的技术问题。
在常见的操作系统中,进程之间可以通过消息队列进行消息的发送。例如,当A进程需要向B进程发送消息时,A进程首先创建用于与B进程通信的消息队列。A进程将需要发送的消息添加到消息队列中,由B进程从消息队列中取出消息,完成通信。
如图1所示为传统的消息结构的示意图。其中每一条消息由消息头和消息体两部分组成。消息头,用于表示消息体中的消息内容的长度,一般为4个字节的长度。消息体中的内容为消息头中所声明的长度。当需要从消息队列中读取消息时,首先读取消息头获取消息内容的长度,然后根据长度读取相应的消息内容。
传统的消息结构中,用来保存消息长度的消息头是固定长度的,为了能表示0~n的消息,一般采用int类型,长度为4个字节。但是很多消息长度本身比较短,比如有的消息内容长度只有几十个字节左右,用一个字节的消息头就可以表达这个长度,其余的字节根本无需用到,这就造成了消息头字节的浪费。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种进程之间的通信方法和一种进程之间的通信装置。
为了解决上述问题,本申请实施例公开了一种进程之间的通信方法,包括:
第一进程获取待发送的原始消息;所述原始消息包括:消息头和消息体;
所述第一进程确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
所述第一进程依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
所述第一进程将所述压缩消息添加到针对第二进程预先创建的消息队列中,所述第二进程用于从所述消息队列中获取压缩消息。
优选的,所述第一进程依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息的步骤包括:
所述第一进程确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
所述第一进程依据所述目标比特位数,确定目标长度;
所述第一进程将所述消息头的长度压缩为所述目标长度。
优选的,所述第一进程将所述消息头的长度压缩为所述目标长度的步骤包括:
所述第一进程将所述消息头的长度设置为所述目标长度;
所述第一进程依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
优选的,所述消息头的长度为4,所述第一进程依据所述目标比特位数,确定目标长度的步骤包括:
若所述目标比特位数小于或等于7,则将目标长度设置为1;
若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
优选的,所述第一进程依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度的步骤包括:
若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种进程之间的通信方法,包括:
第二进程确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
所述第二进程依据所述压缩消息的消息头的长度,从第一进程针对所述第二进程预先创建的消息队列中读取压缩消息的消息头;
所述第二进程依据所述压缩消息的消息头,确定消息体的长度;
所述第二进程依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
优选的,所述第二进程确定压缩消息的消息头的长度的步骤包括:
所述第二进程从所述消息队列中,逐个读取比特位的值直至所读取的比特位的值满足预设条件;
在所读取的比特位的值满足所述预设条件时,所述第二进程依据读取的各个比特位的值,确定压缩消息的消息头的长度。
优选的,所述第二进程依据所述压缩消息的消息头的长度,从第一进程针对所述第二进程预先创建的消息队列中读取压缩消息的消息头的步骤包括:
所述第二进程根据压缩消息的消息头的长度,从所述消息队列中读取第一位数的比特位的值;所述第一位数为消息头的长度所对应的比特位的数目,减去在满足所述预设条件时读取的比特位的数目;
所述第二进程将所述第一比特位的值,加上在满足所述预设条件时读取的比特位的值作为压缩消息的消息头。
优选的,所述第二进程依据所述压缩消息的消息头,确定消息体的长度的步骤包括:
所述第二进程依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度。
优选的,所述在所读取的比特位的值满足所述预设条件时,所述第二进程依据读取的各个比特位的值,确定压缩消息的消息头的长度的步骤包括:
若第一个比特位的值为0,则所述第二进程将消息头的长度确定为1;
若第一个比特位的值为1,第二个比特位为0,则所述第二进程将消息头的长度确定为2;
若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则所述第二进程将消息头的长度确定为3;
若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则所述第二进程将消息头的长度确定为4。
优选的,所述第二进程依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度的步骤包括:
若消息头的长度为1,则所述第二进程采用所述消息头的后7个比特位的值,确定消息体的长度;
若消息头的长度为2,则所述第二进程采用所述消息头的第一个字节的后6个比特位的值以及第二个字节所有比特位的值,确定消息体的长度;
若消息头的长度为3,则所述第二进程采用所述消息头的第一个字节的后5个比特位的值,第二个字节以及第三个字节所有比特位的值,确定消息体的长度;
若消息头的长度为4,则所述第二进程采用所述消息头的第一个字节的后5个比特位的值,第二个字节、第三个字节以及第四个字节所有比特位的值,确定消息体的长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种通信方法,包括:
发送方获取待发送的原始消息;所述原始消息包括:消息头和消息体;
所述发送方确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
所述发送方依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
所述发送方向接收方发送所述压缩消息。
优选的,所述发送方依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息的步骤包括:
所述发送方确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
所述发送方依据所述目标比特位数,确定目标长度;
所述发送方将所述消息头的长度压缩为所述目标长度。
优选的,所述发送方将所述消息头的长度压缩为所述目标长度的步骤包括:
所述发送方将所述消息头的长度设置为所述目标长度;
所述发送方依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
优选的,所述消息头的长度为4,所述发送方依据所述目标比特位数,确定目标长度的步骤包括:
若所述目标比特位数小于或等于7,则将目标长度设置为1;
若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
优选的,所述发送方依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度的步骤包括:
若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种通信方法,包括:
接收方确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
所述接收方依据所述压缩消息的消息头的长度,从发送方针对所述接收方预先创建的消息队列中读取压缩消息的消息头;
所述接收方依据所述压缩消息的消息头,确定消息体的长度;
所述接收方依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
优选的,所述接收方确定压缩消息的消息头的长度的步骤包括:
所述接收方从所述消息队列中,逐个读取比特位的值直至所读取的比特位的值满足预设条件;
在所读取的比特位的值满足所述预设条件时,所述接收方依据读取的各个比特位的值,确定压缩消息的消息头的长度。
优选的,所述接收方依据所述压缩消息的消息头的长度,从发送方针对所述接收方预先创建的消息队列中读取压缩消息的消息头的步骤包括:
所述接收方根据压缩消息的消息头的长度,从所述消息队列中读取第一位数的比特位的值;所述第一位数为消息头的长度所对应的比特位的数目,减去在满足所述预设条件时读取的比特位的数目;
所述接收方将所述第一比特位的值,加上在满足所述预设条件时读取的比特位的值作为压缩消息的消息头。
优选的,所述接收方依据所述压缩消息的消息头,确定消息体的长度的步骤包括:
所述接收方依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度。
优选的,所述在所读取的比特位的值满足所述预设条件时,所述接收方依据读取的各个比特位的值,确定压缩消息的消息头的长度的步骤包括:
若第一个比特位的值为0,则所述接收方将消息头的长度确定为1;
若第一个比特位的值为1,第二个比特位为0,则所述接收方将消息头的长度确定为2;
若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则所述接收方将消息头的长度确定为3;
若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则所述接收方将消息头的长度确定为4。
优选的,所述接收方依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度的步骤包括:
若消息头的长度为1,则所述接收方采用所述消息头的后7个比特位的值,确定消息体的长度;
若消息头的长度为2,则所述接收方采用所述消息头的第一个字节的后6个比特位的值以及第二个字节所有比特位的值,确定消息体的长度;
若消息头的长度为3,则所述接收方采用所述消息头的第一个字节的后5个比特位的值,第二个字节以及第三个字节所有比特位的值,确定消息体的长度;
若消息头的长度为4,则所述接收方采用所述消息头的第一个字节的后5个比特位的值,第二个字节、第三个字节以及第四个字节所有比特位的值,确定消息体的长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种进程之间的通信方法,包括:
第一进程获取待发送的原始消息;所述原始消息包括:消息头和消息体;
所述第一进程依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
所述第一进程将所述压缩消息添加到针对第二进程预先创建的消息队列中,所述第二进程用于从所述消息队列中获取压缩消息。
优选的,所述第一进程依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息的步骤包括:
所述第一进程确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
所述第一进程依据所述目标比特位数,确定目标长度;
所述第一进程将所述消息头的长度压缩为所述目标长度。
优选的,所述第一进程将所述消息头的长度压缩为所述目标长度的步骤包括:
所述第一进程将所述消息头的长度设置为所述目标长度;
所述第一进程依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种消息压缩方法,包括:
获取原始消息;所述原始消息包括:消息头和消息体;
根据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息。
优选的,所述根据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息的步骤包括:
确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
依据所述目标比特位数,确定目标长度;
将所述消息头的长度压缩为所述目标长度。
优选的,所述将所述消息头的长度压缩为所述目标长度的步骤包括:
将所述消息头的长度设置为所述目标长度;
依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种进程之间的通信方法,包括:
第一进程获取待发送的消息内容的长度;
所述第一进程依据所述消息内容的长度生成对应的消息头;
所述第一进程依据所述消息头和所述消息内容生成待发送的消息;
所述第一进程将所述待发送消息添加到针对第二进程预先创建的消息队列中,所述第二进程用于从所述消息队列中获取消息。
优选的,所述第一进程依据所述消息内容的长度生成对应的消息头的步骤包括:
所述第一进程依据所述消息内容的长度,确定消息头的长度;
所述第一进程依据消息头的长度,生成消息头;
所述第一进程依据所述消息头的长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息内容的长度。
优选的,所述第一进程依据所述消息内容的长度,确定消息头的长度的步骤包括:
所述第一进程依据所述消息内容的长度,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息内容的长度的最短的比特序列;
所述第一进程依据所述目标比特位数,确定目标长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种消息生成方法,包括:
获取消息内容的长度;
依据所述消息内容的长度生成对应的消息头;
依据所述消息头和所述消息内容生成消息。
优选的,所述依据所述消息内容的长度生成对应的消息头的步骤包括:
依据所述消息内容的长度,确定消息头的长度;
依据所述消息头的长度,生成消息头;
依据所述消息头的长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息内容的长度。
优选的,所述依据所述消息内容的长度,确定消息头的长度的步骤包括:
依据所述消息内容的长度,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息内容的长度的最短的比特序列;
依据所述目标比特位数,确定目标长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种进程之间的通信装置,包括:第一进程模块,以及第二进程模块;所述第一进程模块包括:
原始消息获取子模块,用于获取待发送的原始消息;所述原始消息包括:消息头和消息体;
长度确定子模块,用于确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
消息压缩子模块,用于依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
压缩消息添加子模块,用于将所述压缩消息添加到针对第二进程模块预先创建的消息队列中;
所述第二进程模块包括:
压缩消息获取子模块,用于从所述消息队列中获取压缩消息。
优选的,所述消息压缩子模块包括:
目标比特位数确定单元,用于确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标长度确定单元,用于依据所述目标比特位数,确定目标长度;
消息压缩单元,用于将所述消息头的长度压缩为所述目标长度。
优选的,所述消息压缩单元包括:
长度设置子单元,用于将所述消息头的长度设置为所述目标长度;
比特位设置子单元,用于依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
优选的,所述消息头的长度为4,所述目标长度确定单元包括:
第一目标长度确定子单元,用于若所述目标比特位数小于或等于7,则将目标长度设置为1;
第二目标长度确定子单元,用于若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
第三目标长度确定子单元,用于若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
第四目标长度确定子单元,用于若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
优选的,所述比特位设置子单元包括:
第一比特位设置组件,用于若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
第二比特位设置组件,用于若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
第三比特位设置组件,用于若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
第四比特位设置组件,用于若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种进程之间的通信装置,包括:第一进程模块,以及第二进程模块;
所述第二进程模块包括:
消息头长度确定子模块,用于确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
消息头读取子模块,用于依据所述压缩消息的消息头的长度,从第一进程模块针对所述第二进程模块预先创建的消息队列中读取压缩消息的消息头;
消息体长度确定子模块,用于依据所述压缩消息的消息头,确定消息体的长度;
消息体读取子模块,用于依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
优选的,所述消息头长度确定子模块包括:
第一比特位读取单元,用于从所述消息队列中,逐个读取比特位的值直至所读取的比特位的值满足预设条件;
消息头长度确定单元,用于在所读取的比特位的值满足所述预设条件时,依据读取的各个比特位的值,确定压缩消息的消息头的长度。
优选的,所述消息头读取子模块包括:
第二比特位读取单元,用于根据压缩消息的消息头的长度,从消息队列中读取第一位数的比特位的值;所述第一位数为消息头的长度所对应的比特位的数目,减去在满足所述预设条件时读取的比特位的数目;
消息头确定单元,用以将所述第一比特位的值,加上在满足所述预设条件时读取的比特位的值作为压缩消息的消息头。
优选的,所述消息体长度确定子模块包括:
消息体长度确定单元,用于依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度。
优选的,所述消息头长度确定单元包括:
第一消息头长度确定子单元,用于若第一个比特位的值为0,则将消息头的长度确定为1;
第二消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为0,则将消息头的长度确定为2;
第三消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则将消息头的长度确定为3;
第四消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则将消息头的长度确定为4。
优选的,所述消息体长度确定单元包括:
第一消息体长度确定子单元,用于若消息头的长度为1,则采用所述消息头的后7个比特位的值,确定消息体的长度;
第二消息体长度确定子单元,用于若消息头的长度为2,则采用所述消息头的第一个字节的后6个比特位的值以及第二个字节所有比特位的值,确定消息体的长度;
第三消息体长度确定子单元,用于若消息头的长度为3,则采用所述消息头的第一个字节的后5个比特位的值,第二个字节以及第三个字节所有比特位的值,确定消息体的长度;
第四消息体长度确定子单元,用于若消息头的长度为4,则采用所述消息头的第一个字节的后5个比特位的值,第二个字节、第三个字节以及第四个字节所有比特位的值,确定消息体的长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种通信装置,包括:发送方模块,以及接收方模块;所述发送方模块包括:
原始消息获取子模块,用于获取待发送的原始消息;所述原始消息包括:消息头和消息体;
长度确定子模块,用于确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
消息压缩子模块,用于依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
压缩消息发送子模块,用于向接收方发送所述压缩消息。
优选的,所述消息压缩子模块包括:
目标比特位数确定单元,用于确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标长度确定单元,用于依据所述目标比特位数,确定目标长度;
消息压缩单元,用于将所述消息头的长度压缩为所述目标长度。
优选的,所述消息压缩单元包括:
长度设置子单元,用于将所述消息头的长度设置为所述目标长度;
比特位设置子单元,用于依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
优选的,所述消息头的长度为4,所述目标长度确定单元包括:
第一目标长度确定子单元,用于若所述目标比特位数小于或等于7,则将目标长度设置为1;
第二目标长度确定子单元,用于若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
第三目标长度确定子单元,用于若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
第四目标长度确定子单元,用于若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
优选的,所述比特位设置子单元包括:
第一比特位设置组件,用于若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
第二比特位设置组件,用于若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
第三比特位设置组件,用于若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
第四比特位设置组件,用于若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种通信装置,包括:发送方模块,以及接收方模块;所述接收方模块包括:
消息头长度确定子模块,用于确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
消息头读取子模块,用于依据所述压缩消息的消息头的长度,从第一进程模块针对所述第二进程模块预先创建的消息队列中读取压缩消息的消息头;
消息体长度确定子模块,用于依据所述压缩消息的消息头,确定消息体的长度;
消息体读取子模块,用于依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
优选的,所述消息头长度确定子模块包括:
第一比特位读取单元,用于从所述消息队列中,逐个读取比特位的值直至所读取的比特位的值满足预设条件;
消息头长度确定单元,用于在所读取的比特位的值满足所述预设条件时,依据读取的各个比特位的值,确定压缩消息的消息头的长度。
优选的,所述消息头读取子模块包括:
第二比特位读取单元,用于根据压缩消息的消息头的长度,从消息队列中读取第一位数的比特位的值;所述第一位数为消息头的长度所对应的比特位的数目,减去在满足所述预设条件时读取的比特位的数目;
消息头确定单元,用以将所述第一比特位的值,加上在满足所述预设条件时读取的比特位的值作为压缩消息的消息头。
优选的,所述消息体长度确定子模块包括:
消息体长度确定单元,用于依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度。
优选的,所述消息头长度确定单元包括:
第一消息头长度确定子单元,用于若第一个比特位的值为0,则将消息头的长度确定为1;
第二消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为0,则将消息头的长度确定为2;
第三消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则将消息头的长度确定为3;
第四消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则将消息头的长度确定为4。
优选的,所述消息体长度确定单元包括:
第一消息体长度确定子单元,用于若消息头的长度为1,则采用所述消息头的后7个比特位的值,确定消息体的长度;
第二消息体长度确定子单元,用于若消息头的长度为2,则采用所述消息头的第一个字节的后6个比特位的值以及第二个字节所有比特位的值,确定消息体的长度;
第三消息体长度确定子单元,用于若消息头的长度为3,则采用所述消息头的第一个字节的后5个比特位的值,第二个字节以及第三个字节所有比特位的值,确定消息体的长度;
第四消息体长度确定子单元,用于若消息头的长度为4,则采用所述消息头的第一个字节的后5个比特位的值,第二个字节、第三个字节以及第四个字节所有比特位的值,确定消息体的长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种进程之间的通信装置,包括:第一进程模块,以及第二进程模块;
所述第一进程模块包括:
原始消息获取子模块,用于获取待发送的原始消息;所述原始消息包括:消息头和消息体;
消息压缩子模块,用于依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
压缩消息添加子模块,用于将所述压缩消息添加到针对第二进程预先创建的消息队列中;
所述第二进程模块包括:
压缩消息获取子模块,用于从所述消息队列中获取压缩消息。
优选的,所述消息压缩子模块包括:
目标比特位数确定单元,用于确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标长度确定单元,用于依据所述目标比特位数,确定目标长度;
消息压缩单元,用于将所述消息头的长度压缩为所述目标长度。
优选的,所述消息压缩单元包括:
长度设置子单元,用于将所述消息头的长度设置为所述目标长度;
比特位设置子单元,用于依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种消息压缩装置,包括:
原始消息获取模块,用于获取原始消息;所述原始消息包括:消息头和消息体;
消息压缩模块,用于根据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息。
优选的,所述消息压缩模块包括:
目标比特位数确定子模块,用于确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标长度确定子模块,用于依据所述目标比特位数,确定目标长度;
消息压缩子模块,用于将所述消息头的长度压缩为所述目标长度。
优选的,所述消息压缩子模块包括:
长度设置单元,用于将所述消息头的长度设置为所述目标长度;
比特位设置单元,用于依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种进程之间的通信装置,包括:第一进程模块,以及第二进程模块;
所述第一进程模块包括:
内容长度获取子模块,用于获取待发送的消息内容的长度;
消息头生成子模块,用于依据所述消息内容的长度生成对应的消息头;
消息生成子模块,用于依据所述消息头和所述消息内容生成待发送的消息;
消息添加子模块,用于将所述待发送消息添加到针对第二进程预先创建的消息队列中;
所述第二进程模块包括:
消息获取子模块,用于从所述消息队列中获取消息。
优选的,所述消息头生成子模块包括:
消息头长度确定单元,用于依据所述消息内容的长度,确定消息头的长度;
消息头生成单元,用于依据所述消息头的长度,生成消息头;
比特位设置单元,用于依据所述消息头的长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息内容的长度。
优选的,所述消息头长度确定单元包括:
比特位数确定子单元,用于依据所述消息内容的长度,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息内容的长度的最短的比特序列;
目标长度确定子单元,用于依据所述目标比特位数,确定目标长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种消息生成装置,包括:
消息内容长度获取模块,用于获取消息内容的长度;
消息头生成模块,用于依据所述消息内容的长度生成对应的消息头;
消息生成模块,用于依据所述消息头和所述消息内容生成消息。
优选的,所述消息头生成模块包括:
消息头长度确定子模块,用于依据所述消息内容的长度,确定消息头的长度;
消息头生成子模块,用于依据消息头的长度,生成消息头;
比特位设置子模块,用于依据所述消息头的长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息内容的长度。
优选的,所述消息头长度确定子模块包括:
目标比特位数确定单元,用于依据所述消息内容的长度,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息内容的长度的最短的比特序列;
目标长度确定单元,用于依据所述目标比特位数,确定目标长度。
优选的,所述长度为字节长度。
本申请实施例还公开了一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如上所述的一个或多个的方法。
本申请实施例还公开了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如上所述的一个或多个的方法。
本申请实施例包括以下优点:
在本申请实施例中,任意两个进程的在通过消息队列进行消息收发的过程中,发送方进程根据待发送的原始消息的消息体的长度和消息头的长度,对消息头进行压缩处理,删除消息头中不需要表示消息体长度的字节,减少压缩头的长度。从而减少消息队列中存储的消息的长度,减少了对内存资源的占用,适用于IoT领域中硬件资源有限或其他资源相对紧张的设备。
附图说明
图1是传统的消息结构的示意图;
图2是本申请的一种进程之间的通信方法实施例1的步骤流程图;
图3是本申请的一种进程之间的通信方法实施例2的步骤流程图;
图4是本申请的一种进程之间的通信方法实施例3的步骤流程图;
图5是本申请的一种进程之间的通信方法实施例4的步骤流程图;
图6是本申请实施例中进程从消息队列中读取消息的示意图;
图7是本申请的一种通信方法实施例1的步骤流程图;
图8是本申请的一种通信方法实施例2的步骤流程图;
图9是本申请的一种进程之间的通信方法实施例5的步骤流程图;
图10是本申请的一种消息压缩方法实施例的步骤流程图;
图11是本申请的一种进程之间的通信方法实施例6的步骤流程图;
图12是本申请的一种消息生成方法实施例的步骤流程图;
图13是本申请的一种进程之间的通信装置实施例1的结构框图;
图14是本申请的一种进程之间的通信装置实施例2的结构框图;
图15是本申请的一种通信装置实施例1的结构框图;
图16是本申请的一种通信装置实施例2的结构框图;
图17是本申请的一种进程之间的通信装置实施例3的结构框图;
图18是本申请的一种消息压缩装置实施例的结构框图;
图19是本申请的一种进程之间的通信装置实施例3的结构框图;
图20是本申请的一种消息生成装置实施例的结构框图;
图21是本申请一种智能终端实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请实施例的核心构思之一在于,在任意两个进程的通过消息队列进行消息收发的过程中,发送方进程根据待发送消息的消息体的长度和消息头的长度,对消息头进行压缩处理,删除消息头中不需要表示消息体长度的字节,减少压缩头的长度。
参照图2,示出了本申请的一种进程之间的通信方法实施例1的步骤流程图,具体可以包括如下步骤:
步骤101,第一进程获取待发送的原始消息;所述原始消息包括:消息头和消息体;
在本申请实施例中,消息由两部分组成:前一部分的消息头和后一部分的消息体。
消息头可以包括一个或多个字节,一个字节包括了8比特位(bit),消息头各个字节的各个比特位的取值,可以表示消息体的长度。
例如,4个字节的消息头的取值可以为0000 0000 0000 0000 0000 0000 00000111,其对应的十进制数为7,表示消息体的长度为7个字节。
在本申请实施例中,对于待发送的原始消息,其消息头所包括的长度大于用于表示对应消息体长度所需的长度。
例如,7字节长度的消息体实际上只需要用1个字节0000 0111就能够表示。而消息头却用了4个字节,其中3个字节相当于被浪费了。
对于内存资源较小的设备,传输没有意义的字节,相当于增加了进程所要发送的数据量,浪费了内存资源的占用。
步骤102,所述第一进程确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
在本申请实施例中,所述长度为字节长度。
原始消息的消息头的长度是消息头未经压缩前的长度,消息头中各字节的各比特位的值组合起来的序列,可以表示消息体的长度。
步骤103,所述第一进程依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
第一进程可以依据消息体的长度,确定用于表示该长度所需的最小字节数。然后第一进程根据所需的最小字节数压缩消息头的长度。
例如,若消息体的长度为31字节,对应的二进制数为0001 1111。该长度只需1个字节表示。若消息头原始的长度为4个字节,则将消息头压缩为1个字节,从而得到压缩消息。
步骤104,所述第一进程将所述压缩消息添加到针对第二进程预先创建的消息队列中,所述第二进程用于从所述消息队列中获取压缩消息。
第一进程在向第二进程发送消息之前,需要预先建立一个消息队列。消息队列创建完成后,再将压缩消息添加到消息队列中。第二进程从消息队列中读取压缩消息,从而完成消息的收发过程。
在本申请实施例中,任意两个进程的在通过消息队列进行消息收发的过程中,发送方进程根据待发送的原始消息的消息体的长度和消息头的长度,对消息头进行压缩处理,删除消息头中不需要表示消息体长度的字节,减少压缩头的长度。从而减少消息队列中存储的消息的长度,减少了对内存资源的占用,适用于IoT领域中硬件资源有限或其他资源相对紧张的操作系统。
参照图3,示出了本申请的一种进程之间的通信方法实施例2的步骤流程图,具体可以包括如下步骤:
步骤201,第一进程获取待发送的原始消息;所述原始消息包括:消息头和消息体;
在本申请实施例中,消息由两部分组成:前一部分的消息头和后一部分的消息体。
步骤202,所述第一进程确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
在本申请实施例中,所述长度为字节长度。原始消息的消息头的长度是消息头未经压缩前的长度,消息头中各字节的各比特位的值组合起来的序列,可以表示消息体的长度。
步骤203,所述第一进程确定目标比特位数,所述目标比特位数为表示所述消息体的长度的目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标比特序列为表示消息体的长度的最短的比特序列。例如,若消息体的长度为127字节,对应的最短的比特序列为1111111,该比特序列的位数为7位。
步骤204,所述第一进程依据所述目标比特位数,确定目标长度;
目标长度所对应的比特位数大于目标比特位数。
目标长度的确定,可以按目标比特位数的大小阶段性的划分。
在本申请实施例中,可以预先设定多个比特位数的范围区间,每一个范围区间对应一个目标长度。处于某一个范围区间内的比特位数,对应同一个目标长度。
具体的,在本申请实施例中消息头的长度为4,所述步骤204具体可以包括如下子步骤:
子步骤S11,若所述目标比特位数小于或等于7,则将目标长度设置为1;
目标比特位数小于或等于7,表示消息体的长度范围在0字节-127字节(1111111)之间。对应的目标长度可设置为1个字节长度。
子步骤S12,若所述目标比特位数大于7,以及小于或等于15,则将目标长度设置为2;
目标比特位数大于7,以及小于或等于14,表示消息体的长度范围在128字节(10000000)-16383字节(11 1111 1111 1111)之间。对应的目标长度可设置为2个字节长度。
子步骤S13,若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
目标比特位数大于14,以及小于或等于21,表示消息体的长度范围在16384字节(100 0000 0000 0000)-2097151字节(1 1111 1111 1111 1111 1111)之间。对应的目标长度可设置为3个字节长度。
子步骤S14,若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
目标比特位数大于21,以及小于或等于29,表示消息体的字节长度范围在2097152字节(10 0000 0000 0000 0000 0000)-536870911字节(1 1111 1111 1111 1111 11111111 1111)之间。对应的目标字节长度可设置为4个字节长度。
若所述目标比特位数大于21,以及小于或等于29,表示消息头的长度仍然为4个字节,不需要压缩。
在本申请实施例的优选示例中,消息头的长度还可以为6字节、8字节等等。只要当消息头中部分字节不用于表示消息体的长度,都可以采用本申请的方法对消息头进行压缩处理。例如,当消息头的长度为6字节时,目标长度为4字节,则将消息头从6字节压缩为4字节。
步骤205,所述第一进程将所述消息头的长度压缩为所述目标长度。
在本申请实施例中,所述步骤205可以包括如下子步骤:
子步骤S21,所述第一进程将所述消息头的长度设置为所述目标长度;
在本申请实施例中,消息头的长度可以为4字节。
若目标长度为3字节,则第一进程将消息头的长度从4字节设置为3字节。若目标长度为4字节,则第一进程仍然将消息头的长度保持为4字节。
子步骤S22,所述第一进程依据所述目标长度,设置所述消息头中特定比特位的取值,采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
目标比特序列为表示所述消息体的长度的最短的比特序列。
特定比特位的取值和目标长度可以预先设定好对应关系。
在本申请实施例中,所述子步骤S22具体可以包括:
子步骤S221,若所述目标长度为1,则将所述消息头的第一个比特位设置为0,采用所述消息头后面的7个比特位表示所述消息体的长度;
例如,若目标长度为1字节,也就是说消息头只由一个字节组成。第一进程将该字节的第一个比特位设置为0。
若目标比特序列为1111,对应的十进制的值为15。消息头中后面的7个比特位用于表示消息体的长度。
第一进程将该消息头后面的7个比特位设置为000 1111,完整的消息头为00001111,该消息头表示了对应的消息体的长度为15字节。
子步骤S222,若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0,采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
例如,若目标长度为2字节,也就是说消息头由两个字节组成。第一进程将该字节的第一个比特位设置为1,第二个比特位设置为0。
若目标比特序列为100 0000 0000,对应的十进制的值为1024。
消息头中,第一个字节后面的6个比特位以及第二个字节用于表示消息体的长度。
第一进程将该消息头第一个字节后面的6个比特位设置为00 0100,第二个字节设置为0000 0000。完整的消息头为1000 0100 0000 0000,该消息头表示了对应的消息体的长度为1024字节。
子步骤S223,若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0,采用所述第一个字节后面的5个比特位的值,以及所述第二个字节、第三个字节的所有比特位表示所述消息体的长度;
例如,若目标长度为3字节,第一进程将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0。
若目标比特序列为1100 0000 0000 0000,对应的十进制的值为49152。
消息头中,第一个字节后面5个比特位、第二个字节以及第三个字节用于表示消息体的长度。
第一进程将消息头第一个字节后面5个比特位的设置为0 0000,将第二个字节设置为1100 0000,将第三个字节设置为0000 0000。完整的消息头为1100 0000 1100 00000000 0000,该消息头表示了对应的消息头的长度为49152字节。
子步骤S224,若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1,采用所述第一个字节后面的5个比特位的值,以及所述第二个字节、第三个字节、第四个字节的所有比特位表示所述消息体的长度。
例如,若目标长度为4字节,第一进程将消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1。
若目标比特序列为110 0000 0000 0000 0000 0000,消息头对应的十进制值为6291456。
消息头中第一个字节后面的5个比特位的值,以及第二个字节、第三个字节、第四个字节的所有比特位用于表示消息体的长度。
第一进程将该消息头第一个字节后面的5个比特位设置为0 0000,第二个字节设置为0110 0000,第三个字节设置为0000 0000,第四个字节设置为0000 0000。完整的消息头为1110 0000 0110 0000 0000 0000 0000 0000。该消息头表示了对应的消息体的长度为6291456字节。
在本申请实施例的优选示例中,当目标长度为不同数值时,可以采用第一个字节中不同的特定比特位的取值来表示目标长度,并采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
步骤206,所述第一进程将所述压缩消息添加到针对第二进程预先创建的消息队列中,所述第二进程用于从所述消息队列中获取压缩消息。
第一进程在向第二进程发送消息之前,需要预先建立一个消息队列。消息队列创建完成后,再将压缩消息添加到消息队列中。第二进程从消息队列中读取压缩消息,从而完成消息的收发过程。
在本申请实施例中,任意两个进程的在通过消息队列进行消息收发的过程中,发送方进程根据待发送的原始消息的消息体的长度和消息头的长度,对消息头进行压缩处理,删除消息头中不需要表示消息体长度的字节,减少压缩头的长度。从而减少消息队列中存储的消息的长度,减少了对内存资源的占用。
参照图4,示出了本申请的一种进程之间的通信方法实施例3的步骤流程图,具体可以包括如下步骤:
步骤301,第二进程确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
在本申请实施例中,所述长度为字节长度。
在本申请实施例中,当第一进程通过消息队列与第二进程进行消息发送的过程中。第一进程采用待发送的原始消息压缩生成压缩消息,消息由两部分组成:前一部分的消息头和后一部分的消息体。
压缩消息的生成过程具体可以参见上述的实施例1和实施例2,在此不作赘述。
消息头可以包括一个或多个字节,一个字节又包括了8比特位(bit),消息头各个字节的各个比特位的取值,可以表示消息体的长度。
步骤302,所述第二进程依据所述压缩消息的消息头的长度,从第一进程针对所述第二进程预先创建的消息队列中读取压缩消息的消息头;
第一进程在向第二进程发送消息之前,需要预先建立一个消息队列。消息队列创建完成后,再将压缩消息添加到消息队列中。第二进程从消息队列中读取压缩消息,从而完成消息的收发过程。
第二进程读取压缩消息可以根据消息头的长度,从消息队列中读取长度相应的内容作为压缩消息的消息头。
步骤303,所述第二进程依据所述压缩消息的消息头,确定消息体的长度;
在本申请实施例中,压缩消息的消息头的内容可以表示消息体的长度。
步骤304,所述第二进程依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
第二进程依据消息体的长度从消息队列中读取相应长度的内容作为消息体,从而完成消息的读取。
在本申请实施例中,任意两个进程的在通过消息队列进行消息收发的过程中,发送方进程根据待发送的原始消息的消息体的长度和消息头的长度,对消息头进行压缩处理,删除消息头中不需要表示消息体长度的字节,减少压缩头的长度。从而减少消息队列中存储的消息的长度,减少了对内存资源的占用。
接收方进程在从消息队列中读取消息时,根据消息头的长度从消息队列中读取消息头。然后根据消息头的内容,从消息队列中读取消息体,从而完成消息的接收。
参照图5,示出了本申请的一种进程之间的通信方法实施例4的步骤流程图,具体可以包括如下步骤:
步骤401,所述第二进程从由第一进程预先创建的消息队列中,逐个读取比特位的值直至所读取的比特位的值满足预设条件;
在本申请实施例中,当第一进程通过消息队列与第二进程进行消息发送的过程中。第一进程采用待发送的原始消息压缩生成压缩消息,消息由两部分组成:前一部分的消息头和后一部分的消息体。
压缩消息的生成过程具体可以参见上述的实施例1和实施例2,在此不作赘述。
消息队列中的内容是按先进先出的顺序排列的,当第二进程从消息队列中读取新的消息时,第二进程从消息队列的头部开始逐个读取比特位的值,直至所读取的比特位的值满足预设条件。
第二进程从读取的第一个比特位开始,判断已读取比特位的值是否满足预设条件。在本申请实施例中,预设条件可以包括多个,一个预设条件只对应一种情况的读取的比特位的值。
预设条件可以为第二进程所读取的比特位的值,满足预先设定的值。
步骤402,在所读取的比特位的值满足所述预设条件时,所述第二进程依据读取的各个比特位的值,确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
在本申请实施例中,所述长度为字节长度。
每一种满足预设条件时读取的比特位的值,都对应有一种消息头的长度的情况。第二进程根据满足预设条件时读取的比特位的值,可以确定压缩消息的消息头的长度。具体的,在本申请实施例中所述步骤402可以包括如下子步骤:
子步骤S31,若第一个比特位的值为0,则所述第二进程将消息头的长度确定为1;
在本申请实施例中,预设条件可以包括:第一个比特位的值为0。若第一个比特位的值为0,第二进程将消息头的长度确定为1字节。
子步骤S32,若第一个比特位的值为1,第二个比特位为0,则所述第二进程将消息头的长度确定为2;
预设条件还可以包括:第一个比特位的值为1,第二个比特位为0。若第一个比特位的值为1,第二个比特位为0,则第二进程将消息头的长度确定为2字节。
子步骤S33,若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则所述第二进程将消息头的长度确定为3;
预设条件还可以包括:第一个比特位的值为1,第二个比特位为1,第三个比特位为0。若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则第二进程将消息头的长度确定为3字节。
子步骤S34,若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则所述第二进程将消息头的长度确定为4。
预设条件还可以包括:第一个比特位的值为1,第二个比特位为1,第三个比特位为1。若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则第二进程将消息头的长度确定为4字节。
步骤403,所述第二进程根据压缩消息的消息头的长度,从消息队列中读取第一位数的比特位的值;所述第一位数为消息头的长度所对应的比特位的数目,减去在满足所述预设条件时读取的比特位的数目;
在本申请实施例中,一个字节包括8比特位。第一位数为消息头的长度所对应的比特位的数目,减去在满足述预设条件时读取的比特位的数目。
例如,若消息头的长度为2字节,其对应的比特位数目为16。在满足预设条件时,已读取的比特位的数目为2,则第一位数为16-2=14。
步骤404,所述第二进程将所述第一比特位的值,加上在满足所述预设条件时读取的比特位的值作为压缩消息的消息头。
所述第二进程可以按照读取顺序的先后,将满足所述预设条件时读取的比特位的值加上第一比特位的值,作为压缩消息的消息头。
步骤405,所述第二进程依据所述压缩消息的消息头,确定消息体的长度;
压缩消息的消息头中的比特位的值,可以用于表示消息体的长度。
在本申请实施例中,所述步骤405可以为包括:
所述第二进程依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度。具体的,可以包括:
若消息头的长度为1,则所述第二进程采用所述消息头的后7个比特位的值,确定消息体的长度;
若消息头的长度为2,则所述第二进程采用所述消息头的第一个字节的后6个比特位的值以及第二个字节所有比特位的值,确定消息体的长度;
若消息头的长度为3,则所述第二进程采用所述消息头的第一个字节的后5个比特位的值,第二个字节以及第三个字节所有比特位的值,确定消息体的长度;
若消息头的长度为4,则所述第二进程采用所述消息头的第一个字节的后5个比特位的值,第二个字节、第三个字节以及第四个字节所有比特位的值,确定消息体的长度。
步骤406,所述第二进程依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
第二进程依据消息体的长度从消息队列中,读取相应长度的比特位的值作为消息体,从而完成消息的读取。
在本申请实施例中,任意两个进程的在通过消息队列进行消息收发的过程中,发送方进程根据待发送的原始消息的消息体的长度和消息头的长度,对消息头进行压缩处理,删除消息头中不需要表示消息体长度的字节,减少压缩头的长度。从而减少消息队列中存储的消息的长度,减少了对内存资源的占用。
接收方进程在从消息队列中读取消息时,根据消息头的长度从消息队列中读取消息头。然后根据消息头的内容,从消息队列中读取消息体,从而完成消息的接收。
为了使本领域技术人员能够更好地理解本申请实施例,下面通过一个例子对本申请实施例加以说明:
在任意两个进程的通过消息队列进行消息收发的过程中,发送方进程首先根据待发送消息的消息体的字节长度和消息头的原始字节长度,对消息头进行压缩处理,删除消息头中不需要表示消息体字节长度的字节,减少压缩头的字节长度。
消息发送方进程压缩消息的过程可以包括:
原始消息的消息头的字节长度为4。
当消息体的字节长度在0-127范围内时,只用1个字节的消息头来表示消息体的字节长度,把4个字节压缩为1个字节。压缩后的消息头中,第1个比特位的值为0,表示这个消息头只有1个字节。后面7个比特位可以用来表示消息体的字节长度范围为0-127。
当消息体的字节长度在128-16383范围内时,可以用2个字节的消息头来表示消息体的字节长度,把4个字节压缩为2个字节。压缩后的消息头中,第1个字节的第1个比特位的值为1,第1个字节的第2个比特位的值为0,表示这个消息头有2个字节。第一个字节后面6个比特位,以及第二个字节可以用来表示消息体的字节长度范围为128-16383。
当消息体的字节长度在16384-2097151范围内时,可以用3个字节的消息头来表示消息体的字节长度,把4个字节压缩为3个字节。压缩后的消息头中,第1个字节的第1个比特位的值为1,第1个字节的第2个比特位的值为1,第1个字节的第3个比特位的值为0,表示这个消息头有3个字节。第一个字节后面5个比特位,第二个字节以及第三个字节可以用来表示消息体的字节长度范围为16384-2097151。
当消息体的字节长度在2097152-536870911范围内时,可以用4个字节的消息头来表示消息体的字节长度。消息头中,第1个字节的第1个比特位的值为1,第1个字节的第2个比特位的值为1,第1个字节的第3个比特位的值为1,表示这个消息头有4个字节。第一个字节后面5个比特位,第二个字节,第三个字节以及第四个字节可以用来表示消息体的字节长度范围为2097152-536870911。
参照图6所示为本申请实施例中进程从消息队列中读取消息的示意图。接收方进程从消息队列中读取消息的过程可以包括:
接收方进程读取消息队列中第1个比特位。若第1个比特位的值为0,则表示消息头为1个字节。接收方进程读取第一个字节中剩余的7个比特位来确定消息体的字节长度。
若第1个比特位的值为1,则读取消息队列中第2个比特位。若第2个比特位的值为0,则表示消息头为2个字节。接收方进程读取第一个字节中剩余的6个比特位,以及第2个字节来确定消息体的字节长度。
若第2个比特位的值为1,则读取消息队列中第3个比特位。若第3个比特位的值为0,则表示消息头为3个字节。接收方进程读取第一个字节中剩余的5个比特位,第2个字节以及第3个字节来确定消息体的字节长度。
若第3个比特位的值为1,则表示消息头为4个字节。接收方进程读取第一个字节中剩余的5个比特位,第2个字节、第3个字节以及第4个字节来确定消息体的字节长度。
接收方进程按照消息头所表示的消息体的字节长度,请消息队列中读取相应字节长度的比特位的值作为消息体。
参照图7,示出了本申请的一种通信方法实施例1的步骤流程图,具体可以包括如下步骤:
步骤501,发送方获取待发送的原始消息;所述原始消息包括:消息头和消息体;
本申请实施例中,发送方可以是操作系统中的进程,也可以是各种电子设备(如手机、电脑、平板电脑),还可以是各种程序、应用,本申请在此不作限定。
步骤502,所述发送方确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
本申请实施例中,在本申请实施例中,所述长度为字节长度。
步骤503,所述发送方依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
步骤504,所述发送方向接收方发送所述压缩消息。
在本申请实施例中,所述步骤503可以包括如下子步骤:
子步骤S41,所述发送方确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
子步骤S42,所述发送方依据所述目标比特位数,确定目标长度;
在本申请实施例中,所述消息头的长度为4,所述子步骤S42可以包括:
若所述目标比特位数小于或等于7,则将目标长度设置为1;
若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
子步骤S43,所述发送方将所述消息头的长度压缩为所述目标长度。
在本申请实施例中,所述子步骤S43可以进一步包括:
子步骤S431,所述发送方将所述消息头的长度设置为所述目标长度;
子步骤S432,所述发送方依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
在本申请实施例中,所述子步骤S432可以包括:
若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
参照图8,示出了本申请的一种通信方法实施例2的步骤流程图,具体可以包括如下步骤:
步骤601,接收方确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
在本申请实施例中,所述长度为字节长度。
在本申请实施例中,所述步骤601可以包括如下子步骤:
子步骤S51,所述接收方从所述消息队列中,逐个读取比特位的值直至所读取的比特位的值满足预设条件;
子步骤S52,在所读取的比特位的值满足所述预设条件时,所述接收方依据读取的各个比特位的值,确定压缩消息的消息头的长度。
在本申请实施例中,所述子步骤S52可以包括:
若第一个比特位的值为0,则所述接收方将消息头的长度确定为1;
若第一个比特位的值为1,第二个比特位为0,则所述接收方将消息头的长度确定为2;
若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则所述接收方将消息头的长度确定为3;
若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则所述接收方将消息头的长度确定为4。
步骤602,所述接收方依据所述压缩消息的消息头的长度,从发送方针对所述接收方预先创建的消息队列中读取压缩消息的消息头;
在本申请实施例中,所述步骤602可以包括如下子步骤:
子步骤S61,所述接收方根据压缩消息的消息头的长度,从所述消息队列中读取第一位数的比特位的值;所述第一位数为消息头的长度所对应的比特位的数目,减去在满足所述预设条件时读取的比特位的数目;
子步骤S62,所述接收方将所述第一比特位的值,加上在满足所述预设条件时读取的比特位的值作为压缩消息的消息头。
步骤603,所述接收方依据所述压缩消息的消息头,确定消息体的长度;
在本申请实施例中,所述步骤603可以包括:
所述接收方依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度。
在本申请实施例中,所述接收方依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度的步骤包括:
若消息头的长度为1,则所述接收方采用所述消息头的后7个比特位的值,确定消息体的长度;
若消息头的长度为2,则所述接收方采用所述消息头的第一个字节的后6个比特位的值以及第二个字节所有比特位的值,确定消息体的长度;
若消息头的长度为3,则所述接收方采用所述消息头的第一个字节的后5个比特位的值,第二个字节以及第三个字节所有比特位的值,确定消息体的长度;
若消息头的长度为4,则所述接收方采用所述消息头的第一个字节的后5个比特位的值,第二个字节、第三个字节以及第四个字节所有比特位的值,确定消息体的长度。
步骤604,所述接收方依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
参照图9,示出了本申请的一种进程之间的通信方法实施例5的步骤流程图,具体可以包括如下步骤:
步骤701,第一进程获取待发送的原始消息;所述原始消息包括:消息头和消息体;
步骤702,所述第一进程依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
在本申请实施例中,所述长度为字节长度。
在本申请实施例中,所述步骤702可以包括如下子步骤:
子步骤S71,所述第一进程确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
子步骤S72,所述第一进程依据所述目标比特位数,确定目标长度;
在本申请实施例中,所述子步骤S72可以包括:
若所述目标比特位数小于或等于7,则将目标长度设置为1;
若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
子步骤S73,所述第一进程将所述消息头的长度压缩为所述目标长度。
在本申请实施例中,所述子步骤S73可以包括:
所述第一进程将所述消息头的长度设置为所述目标长度;
所述第一进程依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
在本申请实施例,所述第一进程依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。可以包括:
若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
步骤703,所述第一进程将所述压缩消息添加到针对第二进程预先创建的消息队列中,所述第二进程用于从所述消息队列中获取压缩消息。
参照图10,示出了本申请的一种消息压缩方法实施例的步骤流程图,具体可以包括如下步骤:
步骤801,获取原始消息;所述原始消息包括:消息头和消息体;
步骤802,根据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息。
在本申请实施例中,所述长度为字节长度。
在本申请实施例中,所述步骤802可以包括如下子步骤:
子步骤S81,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
子步骤S82,依据所述目标比特位数,确定目标长度;
在本申请实施例中,所述消息头的长度为4,所述子步骤S82可以包括:
若所述目标比特位数小于或等于7,则将目标长度设置为1;
若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
子步骤S83,将所述消息头的长度压缩为所述目标长度。
在本申请实施例中,所述子步骤S83可以包括:
将所述消息头的长度设置为所述目标长度;
依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
在本申请实施例中,所述依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度可以包括:
若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
参照图11,示出了本申请的一种进程之间的通信方法实施例6的步骤流程图,具体可以包括如下步骤:
步骤901,第一进程获取待发送的消息内容的长度;
在本申请实施例中,所述长度为字节长度。
步骤902,所述第一进程依据所述消息内容的长度生成对应的消息头;
在本申请实施例中,所述步骤902可以包括如下子步骤:
子步骤S91,所述第一进程依据所述消息内容的长度,确定消息头的长度;
在本申请实施例中,所述子步骤S91可以包括:
所述第一进程依据所述消息内容的长度,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息内容的长度的最短的比特序列;
所述第一进程依据所述目标比特位数,确定目标长度。
在本申请实施例中,所述消息头的长度为4,所述依据所述目标比特位数,确定目标长度的步骤可以包括:
若所述目标比特位数小于或等于7,则将目标长度设置为1;
若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
子步骤S92,所述第一进程依据消息头的长度,生成消息头;
子步骤S93,所述第一进程依据所述消息头的长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息内容的长度。
在本申请实施例中,所述子步骤S93可以包括:
若所述消息头的长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
若所述消息头的长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
若所述消息头的长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
若所述消息头的长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
步骤903,所述第一进程依据所述消息头和所述消息内容生成待发送的消息;
步骤904,所述第一进程将所述待发送消息添加到针对第二进程预先创建的消息队列中,所述第二进程用于从所述消息队列中获取消息。
参照图12,示出了本申请的一种消息生成方法实施例的步骤流程图,具体可以包括如下步骤:
步骤1001,获取消息内容的长度;
在本申请实施例中,所述长度为字节长度。
步骤1002,依据所述消息内容的长度生成对应的消息头;
在本申请实施例中,所述步骤1002可以包括如下子步骤:
子步骤S1001,依据所述消息内容的长度,确定消息头的长度;
子步骤S1002,依据所述消息头的长度,生成消息头;
子步骤S1003,依据所述消息头的长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息内容的长度。
在本申请实施例中,所述子步骤S1003可以包括:
若所述消息头的长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
若所述消息头的长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
若所述消息头的长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
若所述消息头的长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
在本申请实施例中,所述子步骤S1002可以包括:
依据所述消息内容的长度,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息内容的长度的最短的比特序列;
依据所述目标比特位数,确定目标长度。
在本申请实施例中,所述消息头的长度为4,所述依据所述目标比特位数,确定目标长度的步骤可以包括:
若所述目标比特位数小于或等于7,则将目标长度设置为1;
若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
步骤1003,依据所述消息头和所述消息内容生成消息。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图13,示出了本申请的一种进程之间的通信装置实施例1的结构框图,具体可以包括如下模块:第一进程模块1101,以及第二进程模块1102;
所述第一进程模块1101可以包括:
原始消息获取子模块11011,用于获取待发送的原始消息;所述原始消息包括:消息头和消息体;
长度确定子模块11012,用于确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
在本申请实施例中,所述长度为字节长度。
消息压缩子模块11013,用于依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
压缩消息添加子模块11014,用于将所述压缩消息添加到针对第二进程模块预先创建的消息队列中;
所述第二进程模块1102可以包括:
压缩消息获取子模块11021,用于从所述消息队列中获取压缩消息。
在本申请实施例中,所述消息压缩子模块11013可以包括:
目标比特位数确定单元,用于确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标长度确定单元,用于依据所述目标比特位数,确定目标长度;
消息压缩单元,用于将所述消息头的长度压缩为所述目标长度。
在本申请实施例中,所述消息压缩单元可以包括:
长度设置子单元,用于将所述消息头的长度设置为所述目标长度;
比特位设置子单元,用于依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
在本申请实施例中,所述消息头的长度为4,所述目标长度确定单元可以包括:
第一目标长度确定子单元,用于若所述目标比特位数小于或等于7,则将目标长度设置为1;
第二目标长度确定子单元,用于若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
第三目标长度确定子单元,用于若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
第四目标长度确定子单元,用于若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
在本申请实施例中,所述比特位设置子单元可以包括:
第一比特位设置组件,用于若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
第二比特位设置组件,用于若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
第三比特位设置组件,用于若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
第四比特位设置组件,用于若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
在本申请实施例中,任意两个进程的在通过消息队列进行消息收发的过程中,发送方进程根据待发送的原始消息的消息体的长度和消息头的长度,对消息头进行压缩处理,删除消息头中不需要表示消息体长度的字节,减少压缩头的长度。从而减少消息队列中存储的消息的长度,减少了对内存资源的占用,适用于IoT领域中硬件资源有限或其他资源相对紧张的操作系统。
参照图14,示出了本申请的一种进程之间的通信装置实施例2的结构框图,具体可以包括如下模块:第一进程模块1201,以及第二进程模块1202;
所述第二进程模块1202可以包括:
消息头长度确定子模块12021,用于确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
消息头读取子模块12022,用于依据所述压缩消息的消息头的长度,从第一进程模块针对所述第二进程模块预先创建的消息队列中读取压缩消息的消息头;
在本申请实施例中,所述长度为字节长度。
消息体长度确定子模块12023,用于依据所述压缩消息的消息头,确定消息体的长度;
消息体读取子模块12024,用于依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
在本申请实施例中,所述消息头长度确定子模块12021可以包括:
第一比特位读取单元,用于从所述消息队列中,逐个读取比特位的值直至所读取的比特位的值满足预设条件;
消息头长度确定单元,用于在所读取的比特位的值满足所述预设条件时,依据读取的各个比特位的值,确定压缩消息的消息头的长度。
在本申请实施例中,所述消息头读取子模块12022可以包括:
第二比特位读取单元,用于根据压缩消息的消息头的长度,从消息队列中读取第一位数的比特位的值;所述第一位数为消息头的长度所对应的比特位的数目,减去在满足所述预设条件时读取的比特位的数目;
消息头确定单元,用以将所述第一比特位的值,加上在满足所述预设条件时读取的比特位的值作为压缩消息的消息头。
在本申请实施例中,所述消息体长度确定子模块12023可以包括:
消息体长度确定单元,用于依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度。
在本申请实施例中,所述消息头长度确定单元可以包括:
第一消息头长度确定子单元,用于若第一个比特位的值为0,则将消息头的长度确定为1;
第二消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为0,则将消息头的长度确定为2;
第三消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则将消息头的长度确定为3;
第四消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则将消息头的长度确定为4。
在本申请实施例中,所述消息体长度确定单元可以包括:
第一消息体长度确定子单元,用于若消息头的长度为1,则采用所述消息头的后7个比特位的值,确定消息体的长度;
第二消息体长度确定子单元,用于若消息头的长度为2,则采用所述消息头的第一个字节的后6个比特位的值以及第二个字节所有比特位的值,确定消息体的长度;
第三消息体长度确定子单元,用于若消息头的长度为3,则采用所述消息头的第一个字节的后5个比特位的值,第二个字节以及第三个字节所有比特位的值,确定消息体的长度;
第四消息体长度确定子单元,用于若消息头的长度为4,则采用所述消息头的第一个字节的后5个比特位的值,第二个字节、第三个字节以及第四个字节所有比特位的值,确定消息体的长度。
在本申请实施例中,任意两个进程的在通过消息队列进行消息收发的过程中,发送方进程根据待发送的原始消息的消息体的长度和消息头的长度,对消息头进行压缩处理,删除消息头中不需要表示消息体长度的字节,减少压缩头的长度。从而减少消息队列中存储的消息的长度,减少了对内存资源的占用,适用于IoT领域中硬件资源有限或其他资源相对紧张的操作系统。
参照图15,示出了本申请的一种通信装置实施例1的结构框图,具体可以包括如下模块:发送方模块1301,以及接收方模块1302;所述发送方模块1301可以包括:
原始消息获取子模块13011,用于获取待发送的原始消息;所述原始消息包括:消息头和消息体;
长度确定子模块13012,用于确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
在本申请实施例中,所述长度为字节长度。
消息压缩子模块13013,用于依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
压缩消息发送子模块13014,用于向接收方发送所述压缩消息。
在本申请实施例中,所述消息压缩子模块13013可以包括:
目标比特位数确定单元,用于确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标长度确定单元,用于依据所述目标比特位数,确定目标长度;
消息压缩单元,用于将所述消息头的长度压缩为所述目标长度。
在本申请实施例中,所述消息压缩单元可以包括:
长度设置子单元,用于将所述消息头的长度设置为所述目标长度;
比特位设置子单元,用于依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
在本申请实施例中,所述消息头的长度为4,所述目标长度确定单元可以包括:
第一目标长度确定子单元,用于若所述目标比特位数小于或等于7,则将目标长度设置为1;
第二目标长度确定子单元,用于若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
第三目标长度确定子单元,用于若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
第四目标长度确定子单元,用于若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
在本申请实施例中,所述比特位设置子单元可以包括:
第一比特位设置组件,用于若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
第二比特位设置组件,用于若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
第三比特位设置组件,用于若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
第四比特位设置组件,用于若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
参照图16,示出了本申请的一种通信装置实施例2的结构框图,具体可以包括如下模块:发送方模块1401,以及接收方模块1402;所述接收方模块1402可以包括:
消息头长度确定子模块14021,用于确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
消息头读取子模块14022,用于依据所述压缩消息的消息头的长度,从第一进程模块针对所述第二进程模块预先创建的消息队列中读取压缩消息的消息头;
在本申请实施例中,所述长度为字节长度。
消息体长度确定子模块14023,用于依据所述压缩消息的消息头,确定消息体的长度;
消息体读取子模块14024,用于依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
在本申请实施例中,所述消息头长度确定子模块14021可以包括:
第一比特位读取单元,用于从所述消息队列中,逐个读取比特位的值直至所读取的比特位的值满足预设条件;
消息头长度确定单元,用于在所读取的比特位的值满足所述预设条件时,依据读取的各个比特位的值,确定压缩消息的消息头的长度。
在本申请实施例中,所述消息头读取子模块14022可以包括:
第二比特位读取单元,用于根据压缩消息的消息头的长度,从消息队列中读取第一位数的比特位的值;所述第一位数为消息头的长度所对应的比特位的数目,减去在满足所述预设条件时读取的比特位的数目;
消息头确定单元,用以将所述第一比特位的值,加上在满足所述预设条件时读取的比特位的值作为压缩消息的消息头。
在本申请实施例中,所述消息体长度确定子模块14023可以包括:
消息体长度确定单元,用于依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度。
在本申请实施例中,所述消息头长度确定单元可以包括:
第一消息头长度确定子单元,用于若第一个比特位的值为0,则将消息头的长度确定为1;
第二消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为0,则将消息头的长度确定为2;
第三消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则将消息头的长度确定为3;
第四消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则将消息头的长度确定为4。
在本申请实施例中,所述消息体长度确定单元可以包括:
第一消息体长度确定子单元,用于若消息头的长度为1,则采用所述消息头的后7个比特位的值,确定消息体的长度;
第二消息体长度确定子单元,用于若消息头的长度为2,则采用所述消息头的第一个字节的后6个比特位的值以及第二个字节所有比特位的值,确定消息体的长度;
第三消息体长度确定子单元,用于若消息头的长度为3,则采用所述消息头的第一个字节的后5个比特位的值,第二个字节以及第三个字节所有比特位的值,确定消息体的长度;
第四消息体长度确定子单元,用于若消息头的长度为4,则采用所述消息头的第一个字节的后5个比特位的值,第二个字节、第三个字节以及第四个字节所有比特位的值,确定消息体的长度。
参照图17,示出了本申请的一种进程之间的通信装置实施例3的结构框图,具体可以包括如下模块:第一进程模块1501,以及第二进程模块1502;
所述第一进程模块1501可以包括:
原始消息获取子模块15011,用于获取待发送的原始消息;所述原始消息包括:消息头和消息体;
消息压缩子模块15012,用于依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
在本申请实施例中,所述长度为字节长度。
压缩消息添加子模块15013,用于将所述压缩消息添加到针对第二进程预先创建的消息队列中;
所述第二进程模块1502可以包括:
压缩消息获取子模块15021,用于从所述消息队列中获取压缩消息。
在本申请实施例中,消息压缩子模块15012可以包括:
目标比特位数确定单元,用于确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标长度确定单元,用于依据所述目标比特位数,确定目标长度;
消息压缩单元,用于将所述消息头的长度压缩为所述目标长度。
在本申请实施例中,所述消息压缩单元可以包括:
长度设置子单元,用于将所述消息头的长度设置为所述目标长度;
比特位设置子单元,用于依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
在本申请实施例中,在本申请实施例中,所述消息头的长度为4,所述目标长度确定单元可以包括:
第一目标长度确定子单元,用于若所述目标比特位数小于或等于7,则将目标长度设置为1;
第二目标长度确定子单元,用于若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
第三目标长度确定子单元,用于若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
第四目标长度确定子单元,用于若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
在本申请实施例中,所述比特位设置子单元可以包括:
第一比特位设置组件,用于若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
第二比特位设置组件,用于若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
第三比特位设置组件,用于若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
第四比特位设置组件,用于若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
参照图18,示出了本申请的一种消息压缩装置实施例的结构框图,具体可以包括如下模块:
原始消息获取模块1601,用于获取原始消息;所述原始消息包括:消息头和消息体;
消息压缩模块1602,用于根据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息。
在本申请实施例中,所述消息压缩模块1602可以包括:
目标比特位数确定子模块,用于确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标长度确定子模块,用于依据所述目标比特位数,确定目标长度;
消息压缩子模块,用于将所述消息头的长度压缩为所述目标长度。
在本申请实施例中,所述消息压缩子模块可以包括:
长度设置单元,用于将所述消息头的长度设置为所述目标长度;
比特位设置单元,用于依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
在本申请实施例中,所述消息头的长度为4,所述目标长度确定子模块可以包括:
第一目标长度确定单元,用于若所述目标比特位数小于或等于7,则将目标长度设置为1;
第二目标长度确定单元,用于若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
第三目标长度确定单元,用于若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
第四目标长度确定单元,用于若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
在本申请实施例中,所述比特位设置单元可以包括:
第一比特位设置子单元,用于若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
第二比特位设置子单元,用于若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
第三比特位设置子单元,用于若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
第四比特位设置子单元,用于若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
参照图19,示出了本申请的一种进程之间的通信装置实施例3的结构框图,具体可以包括如下模块:第一进程模块1701,以及第二进程模块1702;
所述第一进程模块1701可以包括:
内容长度获取子模块17011,用于获取待发送的消息内容的长度;
在本申请实施例中,所述长度为字节长度。
消息头生成子模块17012,用于依据所述消息内容的长度生成对应的消息头;
消息生成子模块17013,用于依据所述消息头和所述消息内容生成待发送的消息;
消息添加子模块17014,用于将所述待发送消息添加到针对第二进程预先创建的消息队列中;
所述第二进程模块1702可以包括:
消息获取子模块17021,用于从所述消息队列中获取消息。
在本申请实施例中,所述消息头生成子模块17012可以包括:
消息头长度确定单元,用于依据所述消息内容的长度,确定消息头的长度;
消息头生成单元,用于依据所述消息头的长度,生成消息头;
比特位设置单元,用于依据所述消息头的长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息内容的长度。
在本申请实施例中,所述比特位设置单元可以包括:
第一比特位设置子单元,用于若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
第二比特位设置子单元,用于若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
第三比特位设置子单元,用于若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
第四比特位设置子单元,用于若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
在本申请实施例中,所述消息头长度确定单元可以包括:
比特位数确定子单元,用于依据所述消息内容的长度,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息内容的长度的最短的比特序列;
目标长度确定子单元,用于依据所述目标比特位数,确定目标长度。
在本申请实施例中,所述消息头的长度为4,所述目标长度确定子模块可以包括:
第一目标长度确定单元,用于若所述目标比特位数小于或等于7,则将目标长度设置为1;
第二目标长度确定单元,用于若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
第三目标长度确定单元,用于若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
第四目标长度确定单元,用于若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
参照图20,示出了本申请的一种消息生成装置实施例的结构框图,具体可以包括如下模块:
消息内容长度获取模块1801,用于获取消息内容的长度;
在本申请实施例中,所述长度为字节长度。
消息头生成模块1802,用于依据所述消息内容的长度生成对应的消息头;
消息生成模块1803,用于依据所述消息头和所述消息内容生成消息。
在本申请实施例中,所述消息头生成模块1802可以包括:
消息头长度确定子模块,用于依据所述消息内容的长度,确定消息头的长度;
消息头生成子模块,用于依据消息头的长度,生成消息头;
比特位设置子模块,用于依据所述消息头的长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息内容的长度。
在本申请实施例中,所述比特位设置子模块可以包括:
第一比特位设置单元,用于若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
第二比特位设置单元,用于若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
第三比特位设置单元,用于若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
第四比特位设置单元,用于若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
在本申请实施例中,所述消息头长度确定子模块可以包括:
目标比特位数确定单元,用于依据所述消息内容的长度,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息内容的长度的最短的比特序列;
目标长度确定单元,用于依据所述目标比特位数,确定目标长度。
在本申请实施例中,所述目标长度确定单元可以包括:
在本申请实施例中,所述消息头的长度为4,所述目标长度确定单元可以包括:
第一目标长度确定子单元,用于若所述目标比特位数小于或等于7,则将目标长度设置为1;
第二目标长度确定子单元,用于若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
第三目标长度确定子单元,用于若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
第四目标长度确定子单元,用于若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的系统。图21示意性地示出了可被用于实现本公开中所述的各个实施例的示例性系统(或装置)2100。
对于一个实施例,图21示出了示例性系统2100,该系统具有一个或多个处理器2102、被耦合到(一个或多个)处理器2102中的至少一个的系统控制模块(芯片组)2104、被耦合到系统控制模块2104的系统存储器2106、被耦合到系统控制模块2104的非易失性存储器(NVM)/存储设备2108、被耦合到系统控制模块2104的一个或多个输入/输出设备2110,以及被耦合到系统控制模块2106的网络接口2112。
处理器2102可包括一个或多个单核或多核处理器,处理器2102可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,系统2100能够作为本申请实施例中所述的浏览器。
在一些实施例中,系统2100可包括具有指令的一个或多个计算机可读介质(例如,系统存储器2106或NVM/存储设备2108)以及与该一个或多个计算机可读介质相合并被配置为执行指令以实现模块从而执行本公开中所述的动作的一个或多个处理器2102。
对于一个实施例,系统控制模块2104可包括任意适当的接口控制器,以向(一个或多个)处理器2102中的至少一个和/或与系统控制模块2104通信的任意适当的设备或组件提供任意适当的接口。
系统控制模块2104可包括存储器控制器模块,以向系统存储器2106提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
系统存储器2106可被用于例如为系统2100加载和存储数据和/或指令。对于一个实施例,系统存储器2106可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,系统存储器2106可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,系统控制模块2104可包括一个或多个输入/输出控制器,以向NVM/存储设备2108及(一个或多个)输入/输出设备2110提供接口。
例如,NVM/存储设备2108可被用于存储数据和/或指令。NVM/存储设备2108可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备2108可包括在物理上作为系统2100被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,NVM/存储设备2108可通过网络经由(一个或多个)输入/输出设备2110进行访问。
(一个或多个)输入/输出设备2110可为系统2100提供接口以与任意其他适当的设备通信,输入/输出设备2110可以包括通信组件、音频组件、传感器组件等。网络接口2112可为系统2100提供接口以通过一个或多个网络通信,系统2100可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器2102中的至少一个可与系统控制模块2104的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器2102中的至少一个可与系统控制模块2104的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器2102中的至少一个可与系统控制模块2104的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器2102中的至少一个可与系统控制模块2104的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,系统2100可以但不限于是:浏览器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)。在各个实施例中,系统2100可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,系统2100包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
其中,如果显示器包括触摸面板,显示屏可以被实现为触屏显示器,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在终端设备时,可以使得该终端设备执行本申请实施例中各方法步骤的指令(instructions)。
在一个示例中提供了一种装置,包括:一个或多个处理器;和,其上存储的有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如本申请实施例中的方法。
在一个示例中还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如本申请实施例中的方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种进程之间的通信方法和一种进程之间的通信装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (86)
1.一种进程之间的通信方法,其特征在于,包括:
第一进程获取待发送的原始消息;所述原始消息包括:消息头和消息体;
所述第一进程确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
所述第一进程依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
所述第一进程将所述压缩消息添加到针对第二进程预先创建的消息队列中,所述第二进程用于从所述消息队列中获取压缩消息。
2.根据权利要求1所述的方法,其特征在于,所述第一进程依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息的步骤包括:
所述第一进程确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
所述第一进程依据所述目标比特位数,确定目标长度;
所述第一进程将所述消息头的长度压缩为所述目标长度。
3.根据权利要求2所述的方法,其特征在于,所述第一进程将所述消息头的长度压缩为所述目标长度的步骤包括:
所述第一进程将所述消息头的长度设置为所述目标长度;
所述第一进程依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
4.根据权利要求3所述的方法,其特征在于,所述消息头的长度为4,所述第一进程依据所述目标比特位数,确定目标长度的步骤包括:
若所述目标比特位数小于或等于7,则将目标长度设置为1;
若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
5.根据权利要求4所述的方法,其特征在于,所述第一进程依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度的步骤包括:
若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
6.根据权利要求1-5任意一项所述的方法,其特征在于,所述长度为字节长度。
7.一种进程之间的通信方法,其特征在于,包括:
第二进程确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
所述第二进程依据所述压缩消息的消息头的长度,从第一进程针对所述第二进程预先创建的消息队列中读取压缩消息的消息头;
所述第二进程依据所述压缩消息的消息头,确定消息体的长度;
所述第二进程依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
8.根据权利要求7所述的方法,其特征在于,所述第二进程确定压缩消息的消息头的长度的步骤包括:
所述第二进程从所述消息队列中,逐个读取比特位的值直至所读取的比特位的值满足预设条件;
在所读取的比特位的值满足所述预设条件时,所述第二进程依据读取的各个比特位的值,确定压缩消息的消息头的长度。
9.根据权利要求8所述的方法,其特征在于,所述第二进程依据所述压缩消息的消息头的长度,从第一进程针对所述第二进程预先创建的消息队列中读取压缩消息的消息头的步骤包括:
所述第二进程根据压缩消息的消息头的长度,从所述消息队列中读取第一位数的比特位的值;所述第一位数为消息头的长度所对应的比特位的数目,减去在满足所述预设条件时读取的比特位的数目;
所述第二进程将所述第一比特位的值,加上在满足所述预设条件时读取的比特位的值作为压缩消息的消息头。
10.根据权利要求8或9所述的方法,其特征在于,所述第二进程依据所述压缩消息的消息头,确定消息体的长度的步骤包括:
所述第二进程依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度。
11.根据权利要求10所述的方法,其特征在于,所述在所读取的比特位的值满足所述预设条件时,所述第二进程依据读取的各个比特位的值,确定压缩消息的消息头的长度的步骤包括:
若第一个比特位的值为0,则所述第二进程将消息头的长度确定为1;
若第一个比特位的值为1,第二个比特位为0,则所述第二进程将消息头的长度确定为2;
若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则所述第二进程将消息头的长度确定为3;
若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则所述第二进程将消息头的长度确定为4。
12.根据权利要求11所述的方法,其特征在于,所述第二进程依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度的步骤包括:
若消息头的长度为1,则所述第二进程采用所述消息头的后7个比特位的值,确定消息体的长度;
若消息头的长度为2,则所述第二进程采用所述消息头的第一个字节的后6个比特位的值以及第二个字节所有比特位的值,确定消息体的长度;
若消息头的长度为3,则所述第二进程采用所述消息头的第一个字节的后5个比特位的值,第二个字节以及第三个字节所有比特位的值,确定消息体的长度;
若消息头的长度为4,则所述第二进程采用所述消息头的第一个字节的后5个比特位的值,第二个字节、第三个字节以及第四个字节所有比特位的值,确定消息体的长度。
13.根据权利要求7-12任意一项所述的方法,其特征在于,所述长度为字节长度。
14.一种通信方法,其特征在于,包括:
发送方获取待发送的原始消息;所述原始消息包括:消息头和消息体;
所述发送方确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
所述发送方依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
所述发送方向接收方发送所述压缩消息。
15.根据权利要求14所述的方法,其特征在于,所述发送方依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息的步骤包括:
所述发送方确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
所述发送方依据所述目标比特位数,确定目标长度;
所述发送方将所述消息头的长度压缩为所述目标长度。
16.根据权利要求15所述的方法,其特征在于,所述发送方将所述消息头的长度压缩为所述目标长度的步骤包括:
所述发送方将所述消息头的长度设置为所述目标长度;
所述发送方依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
17.根据权利要求16所述的方法,其特征在于,所述消息头的长度为4,所述发送方依据所述目标比特位数,确定目标长度的步骤包括:
若所述目标比特位数小于或等于7,则将目标长度设置为1;
若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
18.根据权利要求17所述的方法,其特征在于,所述发送方依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度的步骤包括:
若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
19.根据权利要求14-18任意一项所述的方法,其特征在于,所述长度为字节长度。
20.一种通信方法,其特征在于,包括:
接收方确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
所述接收方依据所述压缩消息的消息头的长度,从发送方针对所述接收方预先创建的消息队列中读取压缩消息的消息头;
所述接收方依据所述压缩消息的消息头,确定消息体的长度;
所述接收方依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
21.根据权利要求20所述的方法,其特征在于,所述接收方确定压缩消息的消息头的长度的步骤包括:
所述接收方从所述消息队列中,逐个读取比特位的值直至所读取的比特位的值满足预设条件;
在所读取的比特位的值满足所述预设条件时,所述接收方依据读取的各个比特位的值,确定压缩消息的消息头的长度。
22.根据权利要求21所述的方法,其特征在于,所述接收方依据所述压缩消息的消息头的长度,从发送方针对所述接收方预先创建的消息队列中读取压缩消息的消息头的步骤包括:
所述接收方根据压缩消息的消息头的长度,从所述消息队列中读取第一位数的比特位的值;所述第一位数为消息头的长度所对应的比特位的数目,减去在满足所述预设条件时读取的比特位的数目;
所述接收方将所述第一比特位的值,加上在满足所述预设条件时读取的比特位的值作为压缩消息的消息头。
23.根据权利要求21或22所述的方法,其特征在于,所述接收方依据所述压缩消息的消息头,确定消息体的长度的步骤包括:
所述接收方依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度。
24.根据权利要求23所述的方法,其特征在于,所述在所读取的比特位的值满足所述预设条件时,所述接收方依据读取的各个比特位的值,确定压缩消息的消息头的长度的步骤包括:
若第一个比特位的值为0,则所述接收方将消息头的长度确定为1;
若第一个比特位的值为1,第二个比特位为0,则所述接收方将消息头的长度确定为2;
若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则所述接收方将消息头的长度确定为3;
若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则所述接收方将消息头的长度确定为4。
25.根据权利要求24所述的方法,其特征在于,所述接收方依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度的步骤包括:
若消息头的长度为1,则所述接收方采用所述消息头的后7个比特位的值,确定消息体的长度;
若消息头的长度为2,则所述接收方采用所述消息头的第一个字节的后6个比特位的值以及第二个字节所有比特位的值,确定消息体的长度;
若消息头的长度为3,则所述接收方采用所述消息头的第一个字节的后5个比特位的值,第二个字节以及第三个字节所有比特位的值,确定消息体的长度;
若消息头的长度为4,则所述接收方采用所述消息头的第一个字节的后5个比特位的值,第二个字节、第三个字节以及第四个字节所有比特位的值,确定消息体的长度。
26.根据权利要求20-25任意一项所述的方法,其特征在于,所述长度为字节长度。
27.一种进程之间的通信方法,其特征在于,包括:
第一进程获取待发送的原始消息;所述原始消息包括:消息头和消息体;
所述第一进程依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
所述第一进程将所述压缩消息添加到针对第二进程预先创建的消息队列中,所述第二进程用于从所述消息队列中获取压缩消息。
28.根据权利要求27所述的方法,其特征在于,所述第一进程依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息的步骤包括:
所述第一进程确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
所述第一进程依据所述目标比特位数,确定目标长度;
所述第一进程将所述消息头的长度压缩为所述目标长度。
29.根据权利要求28所述的方法,其特征在于,所述第一进程将所述消息头的长度压缩为所述目标长度的步骤包括:
所述第一进程将所述消息头的长度设置为所述目标长度;
所述第一进程依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
30.根据权利要求27-29任意一项所述的方法,其特征在于,所述长度为字节长度。
31.一种消息压缩方法,其特征在于,包括:
获取原始消息;所述原始消息包括:消息头和消息体;
根据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息。
32.根据权利要求31所述的方法,其特征在于,所述根据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息的步骤包括:
确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
依据所述目标比特位数,确定目标长度;
将所述消息头的长度压缩为所述目标长度。
33.根据权利要求32所述的方法,其特征在于,所述将所述消息头的长度压缩为所述目标长度的步骤包括:
将所述消息头的长度设置为所述目标长度;
依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
34.根据权利要求31-33任意一项所述的方法,其特征在于,所述长度为字节长度。
35.一种进程之间的通信方法,其特征在于,包括:
第一进程获取待发送的消息内容的长度;
所述第一进程依据所述消息内容的长度生成对应的消息头;
所述第一进程依据所述消息头和所述消息内容生成待发送的消息;
所述第一进程将所述待发送消息添加到针对第二进程预先创建的消息队列中,所述第二进程用于从所述消息队列中获取消息。
36.根据权利要求35所述的方法,其特征在于,所述第一进程依据所述消息内容的长度生成对应的消息头的步骤包括:
所述第一进程依据所述消息内容的长度,确定消息头的长度;
所述第一进程依据消息头的长度,生成消息头;
所述第一进程依据所述消息头的长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息内容的长度。
37.根据权利要求36所述的方法,其特征在于,所述第一进程依据所述消息内容的长度,确定消息头的长度的步骤包括:
所述第一进程依据所述消息内容的长度,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息内容的长度的最短的比特序列;
所述第一进程依据所述目标比特位数,确定目标长度。
38.根据权利要求35-37任意一项所述的方法,其特征在于,所述长度为字节长度。
39.一种消息生成方法,其特征在于,包括:
获取消息内容的长度;
依据所述消息内容的长度生成对应的消息头;
依据所述消息头和所述消息内容生成消息。
40.根据权利要求39所述的方法,其特征在于,所述依据所述消息内容的长度生成对应的消息头的步骤包括:
依据所述消息内容的长度,确定消息头的长度;
依据所述消息头的长度,生成消息头;
依据所述消息头的长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息内容的长度。
41.根据权利要求40所述的方法,其特征在于,所述依据所述消息内容的长度,确定消息头的长度的步骤包括:
依据所述消息内容的长度,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息内容的长度的最短的比特序列;
依据所述目标比特位数,确定目标长度。
42.根据权利要求39-41任意一项所述的方法,其特征在于,所述长度为字节长度。
43.一种进程之间的通信装置,其特征在于,包括:第一进程模块,以及第二进程模块;所述第一进程模块包括:
原始消息获取子模块,用于获取待发送的原始消息;所述原始消息包括:消息头和消息体;
长度确定子模块,用于确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
消息压缩子模块,用于依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
压缩消息添加子模块,用于将所述压缩消息添加到针对第二进程模块预先创建的消息队列中;
所述第二进程模块包括:
压缩消息获取子模块,用于从所述消息队列中获取压缩消息。
44.根据权利要求43所述的装置,其特征在于,所述消息压缩子模块包括:
目标比特位数确定单元,用于确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标长度确定单元,用于依据所述目标比特位数,确定目标长度;
消息压缩单元,用于将所述消息头的长度压缩为所述目标长度。
45.根据权利要求44所述的装置,其特征在于,所述消息压缩单元包括:
长度设置子单元,用于将所述消息头的长度设置为所述目标长度;
比特位设置子单元,用于依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
46.根据权利要求45所述的装置,其特征在于,所述消息头的长度为4,所述目标长度确定单元包括:
第一目标长度确定子单元,用于若所述目标比特位数小于或等于7,则将目标长度设置为1;
第二目标长度确定子单元,用于若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
第三目标长度确定子单元,用于若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
第四目标长度确定子单元,用于若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
47.根据权利要求46所述的装置,其特征在于,所述比特位设置子单元包括:
第一比特位设置组件,用于若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
第二比特位设置组件,用于若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
第三比特位设置组件,用于若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
第四比特位设置组件,用于若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
48.根据权利要求43-47任意一项所述的装置,其特征在于,所述长度为字节长度。
49.一种进程之间的通信装置,其特征在于,包括:第一进程模块,以及第二进程模块;
所述第二进程模块包括:
消息头长度确定子模块,用于确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
消息头读取子模块,用于依据所述压缩消息的消息头的长度,从第一进程模块针对所述第二进程模块预先创建的消息队列中读取压缩消息的消息头;
消息体长度确定子模块,用于依据所述压缩消息的消息头,确定消息体的长度;
消息体读取子模块,用于依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
50.根据权利要求49所述的装置,其特征在于,所述消息头长度确定子模块包括:
第一比特位读取单元,用于从所述消息队列中,逐个读取比特位的值直至所读取的比特位的值满足预设条件;
消息头长度确定单元,用于在所读取的比特位的值满足所述预设条件时,依据读取的各个比特位的值,确定压缩消息的消息头的长度。
51.根据权利要求50所述的装置,其特征在于,所述消息头读取子模块包括:
第二比特位读取单元,用于根据压缩消息的消息头的长度,从消息队列中读取第一位数的比特位的值;所述第一位数为消息头的长度所对应的比特位的数目,减去在满足所述预设条件时读取的比特位的数目;
消息头确定单元,用以将所述第一比特位的值,加上在满足所述预设条件时读取的比特位的值作为压缩消息的消息头。
52.根据权利要求50或51所述的装置,其特征在于,所述消息体长度确定子模块包括:
消息体长度确定单元,用于依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度。
53.根据权利要求52所述的装置,其特征在于,所述消息头长度确定单元包括:
第一消息头长度确定子单元,用于若第一个比特位的值为0,则将消息头的长度确定为1;
第二消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为0,则将消息头的长度确定为2;
第三消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则将消息头的长度确定为3;
第四消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则将消息头的长度确定为4。
54.根据权利要求53所述的装置,其特征在于,所述消息体长度确定单元包括:
第一消息体长度确定子单元,用于若消息头的长度为1,则采用所述消息头的后7个比特位的值,确定消息体的长度;
第二消息体长度确定子单元,用于若消息头的长度为2,则采用所述消息头的第一个字节的后6个比特位的值以及第二个字节所有比特位的值,确定消息体的长度;
第三消息体长度确定子单元,用于若消息头的长度为3,则采用所述消息头的第一个字节的后5个比特位的值,第二个字节以及第三个字节所有比特位的值,确定消息体的长度;
第四消息体长度确定子单元,用于若消息头的长度为4,则采用所述消息头的第一个字节的后5个比特位的值,第二个字节、第三个字节以及第四个字节所有比特位的值,确定消息体的长度。
55.根据权利要求49-54任意一项所述的装置,其特征在于,所述长度为字节长度。
56.一种通信装置,其特征在于,包括:发送方模块,以及接收方模块;所述发送方模块包括:
原始消息获取子模块,用于获取待发送的原始消息;所述原始消息包括:消息头和消息体;
长度确定子模块,用于确定所述待发送的原始消息的消息头的长度,以及消息体的长度;
消息压缩子模块,用于依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
压缩消息发送子模块,用于向接收方发送所述压缩消息。
57.根据权利要求56所述的装置,其特征在于,所述消息压缩子模块包括:
目标比特位数确定单元,用于确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标长度确定单元,用于依据所述目标比特位数,确定目标长度;
消息压缩单元,用于将所述消息头的长度压缩为所述目标长度。
58.根据权利要求57所述的装置,其特征在于,所述消息压缩单元包括:
长度设置子单元,用于将所述消息头的长度设置为所述目标长度;
比特位设置子单元,用于依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
59.根据权利要求58所述的装置,其特征在于,所述消息头的长度为4,所述目标长度确定单元包括:
第一目标长度确定子单元,用于若所述目标比特位数小于或等于7,则将目标长度设置为1;
第二目标长度确定子单元,用于若所述目标比特位数大于7,以及小于或等于14,则将目标长度设置为2;
第三目标长度确定子单元,用于若所述目标比特位数大于14,以及小于或等于21,则将目标长度设置为3;
第四目标长度确定子单元,用于若所述目标比特位数大于21,以及小于或等于29,则将目标长度设置为4。
60.根据权利要求59所述的装置,其特征在于,所述比特位设置子单元包括:
第一比特位设置组件,用于若所述目标长度为1,则将所述消息头的第一个比特位设置为0;采用所述消息头后面的7个比特位表示所述消息体的长度;
第二比特位设置组件,用于若所述目标长度为2,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为0;采用所述第一个字节后面的6个比特位的值,以及所述第二个字节的所有比特位表示所述消息体的长度;
第三比特位设置组件,用于若所述目标长度为3,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为0;采用所述第一个字节后面的5个比特位的值、所述第二个字节,以及第三个字节的所有比特位表示所述消息体的长度;
第四比特位设置组件,用于若所述目标长度为4,则将所述消息头第一个字节的第一个比特位设置为1,第二个比特位设置为1,第三个比特位设置为1;采用所述第一个字节后面的5个比特位的值、所述第二个字节、第三个字节,以及第四个字节的所有比特位表示所述消息体的长度。
61.根据权利要求56-60任意一项所述的装置,其特征在于,所述长度为字节长度。
62.一种通信装置,其特征在于,包括:发送方模块,以及接收方模块;所述接收方模块包括:
消息头长度确定子模块,用于确定压缩消息的消息头的长度;所述压缩消息包括:消息头和消息体;
消息头读取子模块,用于依据所述压缩消息的消息头的长度,从第一进程模块针对所述第二进程模块预先创建的消息队列中读取压缩消息的消息头;
消息体长度确定子模块,用于依据所述压缩消息的消息头,确定消息体的长度;
消息体读取子模块,用于依据所述消息体的长度从所述消息队列中读取相应长度的内容作为消息体。
63.根据权利要求62所述的装置,其特征在于,所述消息头长度确定子模块包括:
第一比特位读取单元,用于从所述消息队列中,逐个读取比特位的值直至所读取的比特位的值满足预设条件;
消息头长度确定单元,用于在所读取的比特位的值满足所述预设条件时,依据读取的各个比特位的值,确定压缩消息的消息头的长度。
64.根据权利要求63所述的装置,其特征在于,所述消息头读取子模块包括:
第二比特位读取单元,用于根据压缩消息的消息头的长度,从消息队列中读取第一位数的比特位的值;所述第一位数为消息头的长度所对应的比特位的数目,减去在满足所述预设条件时读取的比特位的数目;
消息头确定单元,用以将所述第一比特位的值,加上在满足所述预设条件时读取的比特位的值作为压缩消息的消息头。
65.根据权利要求63或64所述的装置,其特征在于,所述消息体长度确定子模块包括:
消息体长度确定单元,用于依据所述压缩消息的消息头中特定比特位的值,确定消息体的长度。
66.根据权利要求65所述的装置,其特征在于,所述消息头长度确定单元包括:
第一消息头长度确定子单元,用于若第一个比特位的值为0,则将消息头的长度确定为1;
第二消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为0,则将消息头的长度确定为2;
第三消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为1,第三个比特位为0,则将消息头的长度确定为3;
第四消息头长度确定子单元,用于若第一个比特位的值为1,第二个比特位为1,第三个比特位为1,则将消息头的长度确定为4。
67.根据权利要求66所述的装置,其特征在于,所述消息体长度确定单元包括:
第一消息体长度确定子单元,用于若消息头的长度为1,则采用所述消息头的后7个比特位的值,确定消息体的长度;
第二消息体长度确定子单元,用于若消息头的长度为2,则采用所述消息头的第一个字节的后6个比特位的值以及第二个字节所有比特位的值,确定消息体的长度;
第三消息体长度确定子单元,用于若消息头的长度为3,则采用所述消息头的第一个字节的后5个比特位的值,第二个字节以及第三个字节所有比特位的值,确定消息体的长度;
第四消息体长度确定子单元,用于若消息头的长度为4,则采用所述消息头的第一个字节的后5个比特位的值,第二个字节、第三个字节以及第四个字节所有比特位的值,确定消息体的长度。
68.根据权利要求62-67任意一项所述的装置,其特征在于,所述长度为字节长度。
69.一种进程之间的通信装置,其特征在于,包括:第一进程模块,以及第二进程模块;
所述第一进程模块包括:
原始消息获取子模块,用于获取待发送的原始消息;所述原始消息包括:消息头和消息体;
消息压缩子模块,用于依据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息;
压缩消息添加子模块,用于将所述压缩消息添加到针对第二进程预先创建的消息队列中;
所述第二进程模块包括:
压缩消息获取子模块,用于从所述消息队列中获取压缩消息。
70.根据权利要求69所述的装置,其特征在于,所述消息压缩子模块包括:
目标比特位数确定单元,用于确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标长度确定单元,用于依据所述目标比特位数,确定目标长度;
消息压缩单元,用于将所述消息头的长度压缩为所述目标长度。
71.根据权利要求70所述的装置,其特征在于,所述消息压缩单元包括:
长度设置子单元,用于将所述消息头的长度设置为所述目标长度;
比特位设置子单元,用于依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
72.根据权利要求69-71任意一项所述的装置,其特征在于,所述长度为字节长度。
73.一种消息压缩装置,其特征在于,包括:
原始消息获取模块,用于获取原始消息;所述原始消息包括:消息头和消息体;
消息压缩模块,用于根据所述消息头的长度以及所述消息体的长度,压缩所述消息头的长度,得到压缩消息。
74.根据权利要求73所述的装置,其特征在于,所述消息压缩模块包括:
目标比特位数确定子模块,用于确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息体的长度的最短的比特序列;
目标长度确定子模块,用于依据所述目标比特位数,确定目标长度;
消息压缩子模块,用于将所述消息头的长度压缩为所述目标长度。
75.根据权利要求74所述的装置,其特征在于,所述消息压缩子模块包括:
长度设置单元,用于将所述消息头的长度设置为所述目标长度;
比特位设置单元,用于依据所述目标长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息体的长度。
76.根据权利要求73-75任意一项所述的装置,其特征在于,所述长度为字节长度。
77.一种进程之间的通信装置,其特征在于,包括:第一进程模块,以及第二进程模块;
所述第一进程模块包括:
内容长度获取子模块,用于获取待发送的消息内容的长度;
消息头生成子模块,用于依据所述消息内容的长度生成对应的消息头;
消息生成子模块,用于依据所述消息头和所述消息内容生成待发送的消息;
消息添加子模块,用于将所述待发送消息添加到针对第二进程预先创建的消息队列中;
所述第二进程模块包括:
消息获取子模块,用于从所述消息队列中获取消息。
78.根据权利要求77所述的装置,其特征在于,所述消息头生成子模块包括:
消息头长度确定单元,用于依据所述消息内容的长度,确定消息头的长度;
消息头生成单元,用于依据所述消息头的长度,生成消息头;
比特位设置单元,用于依据所述消息头的长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息内容的长度。
79.根据权利要求78所述的装置,其特征在于,所述消息头长度确定单元包括:
比特位数确定子单元,用于依据所述消息内容的长度,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息内容的长度的最短的比特序列;
目标长度确定子单元,用于依据所述目标比特位数,确定目标长度。
80.根据权利要求77-79任意一项所述的装置,其特征在于,所述长度为字节长度。
81.一种消息生成装置,其特征在于,包括:
消息内容长度获取模块,用于获取消息内容的长度;
消息头生成模块,用于依据所述消息内容的长度生成对应的消息头;
消息生成模块,用于依据所述消息头和所述消息内容生成消息。
82.根据权利要求81所述的装置,其特征在于,所述消息头生成模块包括:
消息头长度确定子模块,用于依据所述消息内容的长度,确定消息头的长度;
消息头生成子模块,用于依据消息头的长度,生成消息头;
比特位设置子模块,用于依据所述消息头的长度,设置所述消息头中特定比特位的取值;采用消息头中除去所述特定比特位的其余比特位表示所述消息内容的长度。
83.根据权利要求82所述的装置,其特征在于,所述消息头长度确定子模块包括:
目标比特位数确定单元,用于依据所述消息内容的长度,确定目标比特位数,所述目标比特位数为目标比特序列的位数,所述目标比特序列为表示所述消息内容的长度的最短的比特序列;
目标长度确定单元,用于依据所述目标比特位数,确定目标长度。
84.根据权利要求81-83任意一项所述的装置,其特征在于,所述长度为字节长度。
85.一种装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1-6和/或7-13和/或14-19和/或20-26和/或27-30和/或31-34和/或35-38和/或39-42所述的一个或多个的方法。
86.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如权利要求1-6和/或7-13和/或14-19和/或20-26和/或27-30和/或31-34和/或35-38和/或39-42所述的一个或多个的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710449251.1A CN109086144B (zh) | 2017-06-14 | 2017-06-14 | 一种进程之间的通信方法和装置 |
PCT/CN2018/089929 WO2018228238A1 (zh) | 2017-06-14 | 2018-06-05 | 一种进程之间的通信方法和装置 |
US16/714,522 US11216320B2 (en) | 2017-06-14 | 2019-12-13 | Method and apparatus for communication between processes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710449251.1A CN109086144B (zh) | 2017-06-14 | 2017-06-14 | 一种进程之间的通信方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109086144A true CN109086144A (zh) | 2018-12-25 |
CN109086144B CN109086144B (zh) | 2022-04-05 |
Family
ID=64659910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710449251.1A Active CN109086144B (zh) | 2017-06-14 | 2017-06-14 | 一种进程之间的通信方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11216320B2 (zh) |
CN (1) | CN109086144B (zh) |
WO (1) | WO2018228238A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11252110B1 (en) | 2018-09-21 | 2022-02-15 | Marvell Asia Pte Ltd | Negotiation of alignment mode for out of order placement of data in network devices |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060056413A1 (en) * | 2004-09-14 | 2006-03-16 | Oracle International Corporation | Methods and systems for efficient queue propagation using a single protocol-based remote procedure call to stream a batch of messages |
US20110007755A1 (en) * | 2008-02-04 | 2011-01-13 | Anders Jonsson | Communication with compressed headers |
CN102255972A (zh) * | 2011-08-10 | 2011-11-23 | 北京邮电大学 | 6LoWPAN网络中面向HTTP协议的TCP首部压缩方法 |
CN103078921A (zh) * | 2012-12-28 | 2013-05-01 | Tcl集团股份有限公司 | 一种发送、接收消息的方法及装置 |
CN105634684A (zh) * | 2014-11-19 | 2016-06-01 | 中国移动通信集团广东有限公司 | 一种数据包的处理方法、装置及服务器 |
CN106470212A (zh) * | 2016-10-13 | 2017-03-01 | 重庆金美通信有限责任公司 | 一种基于lzw压缩算法对eigrp协议报文进行压缩和加密的方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5222217A (en) | 1989-01-18 | 1993-06-22 | International Business Machines Corporation | System and method for implementing operating system message queues with recoverable shared virtual storage |
US5787300A (en) | 1993-11-10 | 1998-07-28 | Oracle Corporation | Method and apparatus for interprocess communications in a database environment |
US7099949B1 (en) | 1995-10-23 | 2006-08-29 | Imec Vzw | Interprocess communication protocol system |
US6829769B2 (en) | 2000-10-04 | 2004-12-07 | Microsoft Corporation | High performance interprocess communication |
US7263701B2 (en) | 2001-09-04 | 2007-08-28 | Samsung Electronics Co., Ltd. | Interprocess communication method and apparatus |
US20030115358A1 (en) | 2001-09-04 | 2003-06-19 | Yeong-Hyun Yun | Unified interprocess communication |
US8136155B2 (en) | 2003-04-01 | 2012-03-13 | Check Point Software Technologies, Inc. | Security system with methodology for interprocess communication control |
US7389512B2 (en) | 2003-05-09 | 2008-06-17 | Sun Microsystems, Inc. | Interprocess communication within operating system partitions |
US7398325B2 (en) * | 2003-09-04 | 2008-07-08 | International Business Machines Corporation | Header compression in messages |
US8214640B2 (en) * | 2005-12-05 | 2012-07-03 | Alcatel Lucent | Method of embedding information in implementation defined SIP header fields |
US8286188B1 (en) | 2007-04-27 | 2012-10-09 | Marvell Israel (M.I.S.L.) Ltd. | Method and apparatus for advanced interprocess communication |
CN102023961A (zh) * | 2009-09-10 | 2011-04-20 | 中兴通讯股份有限公司 | 一种基于共享内存的通信方法及装置 |
US9317702B2 (en) | 2011-11-29 | 2016-04-19 | Sony Corporation | System and method for providing secure inter-process communications |
US10630654B2 (en) * | 2017-03-22 | 2020-04-21 | Microsoft Technology Licensing, Llc | Hardware-accelerated secure communication management |
US20200104289A1 (en) * | 2018-09-27 | 2020-04-02 | Aptiv Technologies Limited | Sharing classified objects perceived by autonomous vehicles |
-
2017
- 2017-06-14 CN CN201710449251.1A patent/CN109086144B/zh active Active
-
2018
- 2018-06-05 WO PCT/CN2018/089929 patent/WO2018228238A1/zh active Application Filing
-
2019
- 2019-12-13 US US16/714,522 patent/US11216320B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060056413A1 (en) * | 2004-09-14 | 2006-03-16 | Oracle International Corporation | Methods and systems for efficient queue propagation using a single protocol-based remote procedure call to stream a batch of messages |
US20110007755A1 (en) * | 2008-02-04 | 2011-01-13 | Anders Jonsson | Communication with compressed headers |
CN102255972A (zh) * | 2011-08-10 | 2011-11-23 | 北京邮电大学 | 6LoWPAN网络中面向HTTP协议的TCP首部压缩方法 |
CN103078921A (zh) * | 2012-12-28 | 2013-05-01 | Tcl集团股份有限公司 | 一种发送、接收消息的方法及装置 |
CN105634684A (zh) * | 2014-11-19 | 2016-06-01 | 中国移动通信集团广东有限公司 | 一种数据包的处理方法、装置及服务器 |
CN106470212A (zh) * | 2016-10-13 | 2017-03-01 | 重庆金美通信有限责任公司 | 一种基于lzw压缩算法对eigrp协议报文进行压缩和加密的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2018228238A1 (zh) | 2018-12-20 |
US11216320B2 (en) | 2022-01-04 |
CN109086144B (zh) | 2022-04-05 |
US20200125430A1 (en) | 2020-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2012059272A5 (zh) | ||
CN104985939B (zh) | 一种激光打标机控制方法和激光打标机 | |
JP2016500175A (ja) | フローティングオブジェクトの実現方法及び装置 | |
KR102659494B1 (ko) | 전자 장치 및 그 제어 방법 | |
WO2006050145A3 (en) | Methods and apparatus for parallel execution of a process | |
CN110399181A (zh) | 软件开发工具包功能调用方法、系统及电子设备和介质 | |
US20180275771A1 (en) | Electronic device with application management and system and method for selection of applications in device | |
CN109840201B (zh) | Ui测试方法、装置、电子设备及计算机可读存储介质 | |
CN109086144A (zh) | 一种进程之间的通信方法和装置 | |
US10834435B2 (en) | Display apparatus and content display method thereof | |
CN104394346A (zh) | 一种时钟信号控制方法及装置 | |
CN109302449A (zh) | 数据写入方法、数据读取方法、装置和服务器 | |
CN108897582A (zh) | 界面加载方法、装置、电子设备、服务器,以及存储介质 | |
WO2020029527A1 (zh) | 显示界面切换方法、装置及电子设备 | |
CN104469478A (zh) | 信息处理方法、装置及电子设备 | |
CN104615349A (zh) | 一种信息处理的方法及电子设备 | |
US10937385B1 (en) | Frame replay with bit depth considerations | |
CN105405443A (zh) | 基于ape格式的音频信号压缩处理系统及方法 | |
AU2014201812B2 (en) | Mathematical expression display control apparatus, mathematical expression display control method, and computer readable medium recording mathematical expression display control program | |
CN114904216B (zh) | 一种用于虚拟现实跑步机的反馈增强处理方法及系统 | |
CN110858146B (zh) | 数据处理方法、装置和机器可读介质 | |
CN103399782A (zh) | 一种实现Simulink模块仿真数据输出到界面的方法及装置 | |
TWI588746B (zh) | 電子裝置及其控制方法 | |
WO2021212386A1 (zh) | 自定义报表的创建方法、装置、电子设备以及存储介质 | |
WO2022111435A1 (zh) | 一种usb设备随通道录音的方法、装置及存储介质 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40001273 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |