CN117279041A - 数据发送、数据接收方法、设备、介质及程序产品 - Google Patents
数据发送、数据接收方法、设备、介质及程序产品 Download PDFInfo
- Publication number
- CN117279041A CN117279041A CN202311560719.6A CN202311560719A CN117279041A CN 117279041 A CN117279041 A CN 117279041A CN 202311560719 A CN202311560719 A CN 202311560719A CN 117279041 A CN117279041 A CN 117279041A
- Authority
- CN
- China
- Prior art keywords
- message
- new
- initial
- messages
- combined
- 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
- 238000000034 method Methods 0.000 title claims abstract description 86
- 230000005540 biological transmission Effects 0.000 title claims abstract description 43
- 238000004590 computer program Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 abstract description 5
- 238000004891 communication Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 15
- 230000015654 memory Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000009825 accumulation Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 239000011521 glass Substances 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004984 smart glass Substances 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/06—Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/10—Flow control between communication endpoints
- H04W28/14—Flow control between communication endpoints using intermediate storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提供了一种数据发送、数据接收方法、设备、介质及程序产品,可以应用于数据处理的技术领域。该数据发送方法,包括:获取初始消息队列,初始消息队列包括N个初始消息,N为正整数;获取至少一个新消息;在至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下,合并新消息和第N个初始消息,得到合并消息;发送合并消息。
Description
技术领域
本发明涉及数据处理的技术领域,更具体地涉及一种数据发送、数据接收方法、设备、介质及程序产品。
背景技术
低功耗蓝牙(Bluetooth Low Energy,BLE)是一种无线通信技术,广泛应用于各种智能设备之间的通信。
由于BLE 消息是串行发送的,因此在各个业务都发送BLE 消息且出现消息堆积的情况下,会出现消息延时发送完成,对端设备接收到消息的也会相应的延后,导致用户的对端设备响应出现延时,大大降低用户的体验。
发明内容
鉴于上述问题,本发明实施例提供了一种数据发送、数据接收方法、设备、介质及程序产品。
根据本发明实施例的第一个方面,提供了一种数据发送方法,应用于第一电子设备,包括:获取初始消息队列,初始消息队列包括N个初始消息,N为正整数;获取至少一个新消息;在至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下,合并新消息和第N个初始消息,得到合并消息;发送合并消息。
根据本发明的实施例,在至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下 ,合并新消息和第N个初始消息,得到合并消息,包括:在第N个初始消息上依次累加新消息,直到累加到第M+1个新消息后的消息长度大于第一阈值,得到累加至第M个新消息的合并消息,M为大于或等于0的整数。
根据本发明的实施例,在至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下,合并新消息和第N个初始消息,得到合并消息,包括:在N大于等于第二阈值且至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下,合并新消息和第N个初始消息,得到合并消息。
根据本发明的实施例,方法还包括:在N小于第二阈值的情况下,将至少一个新消息根据时间序列***初始消息队列的末位。
根据本发明的实施例,方法还包括:确定累加到第M+1个新消息后的合并消息长度大于第一阈值的情况下,将第M+1个新消息***初始消息队列的末位。
根据本发明的实施例,消息均包括识别序列和内容序列,识别序列中包括内容序列的长度信息,内容序列为消息的数据。
根据本发明的实施例,获取初始消息队列之前包括:响应于第一电子设备与第二电子设备的连接,触发第一电子设备扩容,得到扩容值;第一阈值小于扩容值。
本发明实施例的第二方面提供了一种数据接收方法,应用于第二电子设备,用于接收上述数据发送方法中的合并消息,包括:获取合并消息;根据合并消息中的至少一个消息,分别获取与至少一个消息对应的偏移量值;基于与至少一个消息对应的偏移量值,依次对合并消息中的至少一个消息进行解析,得到与至少一个消息分别对应的解析消息。
根据本发明的实施例,根据合并消息中的至少一个消息,分别获取与至少一个消息对应的偏移量值,包括:根据偏移量值,依次对合并消息中每个消息分别进行解析,得到与每个消息分别对应的解析消息;其中,第一次解析的偏移量值为零,第T+1次解析的偏移量值为M个新消息的识别序列和内容序列的长度之和,M和T相等,M和T均为大于或等于0的整数。
根据本发明的实施例,该方法还包括:获取子线程,子线程用于表征对至少一个解析消息进行接收的进程;基于子线程,在一个解析消息解析完成后立即上报,再对下一个解析消息进行接收。
本发明实施例的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行上述数据发送方法或数据接收方法。
本发明实施例的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述数据发送方法或数据接收方法。
本发明实施例的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述数据发送方法或数据接收方法。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本发明实施例的数据发送、接收方法、装置、设备、介质和程序产品的应用场景图;
图2示意性示出了根据本发明实施例的数据发送方法的流程图;
图3示意性示出了根据本发明实施例的合并第N个初始消息与新消息的示意图;
图4示意性示出了根据本发明实施例的合并第N个初始消息和新消息的流程图;
图5示意性示出了根据本发明实施例的消息的结构示意图;
图6示意性示出了根据本发明实施例的数据发送方法的原理图;
图7示意性示出了根据本发明一实施例的数据接收方法的流程图;
图8示意性示出了根据本发明另一实施例的数据接收方法的流程图;以及
图9示意性示出了根据本发明实施例的适于实现数据发送或接收方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本发明实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。在此使用的术语“包括”、“包含”等表明了特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的***”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的***等)。
本发明的实施例提供了一种数据发送、数据接收方法、设备、介质及程序产品。在介绍本发明实施例提供的技术方案之前,先对本发明涉及的相关技术进行说明。
在相关技术中,随着低功耗蓝牙设备越来越普及,以及移动终端技术的发展,不少公司的业务涉及到手机软件和硬件的BLE数据通信业务。例如,在手机和眼镜的交互场景下,存在手机上各个业务给例如虚拟现实AR眼镜的便携式设备以高频率发送消息的情况。由于BLE 消息是串行发送的,因此等待上一条消息Write 成功,才会发送下一条消息。如果每一条消息发送完成的平均耗时为300ms,当业务层发送消息的间隔小于300ms, 必然会导致新到的消息出现延时发送的问题,消息越多,则延时越长。因此,在手机端各个业务都发送BLE消息且出现消息堆积的情况下,手机端会出现消息延时发送的问题,同时对端设备(眼镜)接收消息的时间也会相应的延后,从而导致用户的对端设备响应出现延时,降低了用户的体验。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
低功耗蓝牙(BLE)连接通常建立在GATT(Generic Attribute Profile)协议之上,GATT用于定义设备之间交换和管理通用属性数据的规范。
MTU,全称为Maximum Transmission Unit,即最大传输单元,它是数据链路层的概念,指以太网数据通信时,链路层上一次性允许通过或转发的数据帧的最大尺寸。MTU通常与通信接口关联,即同一设备的不同接收/转发接口的MTU值可能不同。MTU值一般以字节为单位。
本发明的实施例提供一种数据发送方法,应用于第一电子设备,包括:获取初始消息队列 ,初始消息队列包括N个初始消息,N为正整数;获取至少一个新消息;在至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下,合并新消息和第N个初始消息,得到合并消息;发送合并消息。在通过把多个新消息按照预定的格式与初始消息队列中的初始消息进行合并,从而将需要多次发送的消息进行一次发送,降低发送的耗时,有效的解决消息堆积的问题,提高用户体验。
本发明的实施例还提供一种数据接收方法,应用于第二电子设备,用于接收上述数据发送方法中的合并消息,包括:获取合并消息;根据合并消息中的至少一个消息,分别获取与至少一个消息对应的偏移量值;基于与至少一个消息对应的偏移量值,依次对合并消息中的至少一个消息进行解析,得到与至少一个消息分别对应的解析消息。对合并消息进行特定的解析得到完整的发送消息,高效的实现消息的传递,提升了用户体验。
图1示意性示出了根据本发明实施例的数据发送、接收方法、装置、设备、介质和程序产品的应用场景图。
如图1所示,应用本技术的无线通信***包括:第一电子设备101和第二电子设备102,第一电子设备101和第二电子设备102进行无线通信。
示例性的,第一电子设备101作为无线通信***中的发送终端,第二电子设备102作为无线通信***中的接收终端。例如,第一电子设备101将图像数据、声音数据或文字数据等进行发送,这些数据是要通过无线通信发送的数据。第一电子设备101包括以下任意一项:数据发送设备、蓝牙芯片和低功耗蓝牙设备。示例性地,数据发送设备可以包括手机、可穿戴设备、智能家居设备、车载终端、智能交互设备、平板电脑、电视机、PC(PersonalComputer,个人计算机)、多媒体播放设备等设备。可穿戴设备包括但不限于智能眼镜、智能手环、智能戒指;多媒体播放设备包括但不限于电视、音响、耳机、扬声器设备。第一电子设备101还可以称之为终端,本申请实施例对此不作限定。
第二电子设备102与第一电子设备101之间可以通过蓝牙进行通信,当然,第二电子设备102与第一电子设备101之间还可以通过带外方式进行通信,例如,第二电子设备102与第一电子设备101之间可以通过无线链路、可见光通信、声波通信、磁通信等方式进行通信。
第二电子设备102可以包括以下任意一项:包括以下任意一项:数据接收设备、蓝牙芯片和低功耗蓝牙设备。示例性地,数据接收设备可以包括蓝牙耳机、蓝牙音箱、蓝牙音响、可穿戴设备、智能家居设备、车载终端、智能交互设备、手机、平板电脑、电视机、PC(Personal Computer,个人计算机)、多媒体播放设备等设备。可穿戴设备包括但不限于智能眼镜、智能手环、智能戒指;多媒体播放设备包括但不限于电视、音响、耳机、扬声器设备。示例性地,在第二电子设备102接收到数据后,可以播放或显示该数据。此时,音第二电子设备102还具备播放或显示功能。
在下文中,通过利用例如蓝牙作为第二电子设备102与第一电子设备101之间的无线通信来发送和接收(传送)数据的情况的示例,来详细说明。
以下将基于图1描述的场景,通过图2~图6对公开实施例的数据发送方法进行详细描述。
图2示意性示出了根据本发明实施例的数据发送方法的流程图。图3示意性示出了根据本发明实施例的合并第N个初始消息与新消息的示意图。
如图2所示,该实施例的数据发送包括操作S210~操作S240,应用于第一电子设备。
在操作S210,获取初始消息队列 ,初始消息队列包括N个初始消息,N为正整数。
在操作S220,获取至少一个新消息。
判断至少一个新消息与第N个初始消息的总长度是否小于第一阈值:
在操作S230,在至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下,合并新消息和第N个初始消息,得到合并消息。
在操作S240,发送合并消息。
具体地,第一电子设备创建初始消息队列,在一个或多个新消息到来后,按照新消息到达的先后顺序,依次计算一个或多个新消息与初始消息队列中的第N个初始消息(即队尾消息)的总长度。如果总长度小于第一阈值,则将一个或多个新消息与初始消息队列中的第N个初始消息(即队尾消息)进行合并。而后BLE数据传输层,则从初始消息队列的头部取消息,按照串行发送的方式,一个接着一个发送消息;发送消息时,无需等合并后再将消息队列依次逐个进行发送,而是在合并的过程中,按照消息的进度,直接进行发送。
可以理解的是,第N个初始消息是初始消息队列队尾的消息,通过将至少一个或者两个以上新消息按照预定的格式与第N个初始消息(即初始消息队列中队尾的初始消息)进行合并,从而将需要多次发送的消息进行一次发送,能够降低发送的耗时,有效解决消息堆积的问题,提高用户体验。
在一些实施例中,在操作S230中,在至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下,合并新消息和第N个初始消息,得到合并消息,包括:在第N个初始消息上依次累加新消息,直到累加到第M+1个新消息后的消息长度大于第一阈值,得到累加至第M个新消息的合并消息,M为大于或等于0的整数。
其中,确定累加到第M+1个新消息后的合并消息长度大于第一阈值的情况下,将第M+1个新消息***初始消息队列的末位。
具体地,第一电子设备创建初始消息队列,在至少一个新消息到来后,按照新消息到达的先后顺序,计算最先到达的新消息(例如,可以是第一个新消息)与初始消息队列中的第N个初始消息(即队尾消息)的总长度。
在第一个新消息与第N个初始消息的总长度小于第一阈值的情况下,再累加第二个新消息,计算第一个新消息、第二个新消息和第N个初始消息的总长度。
第一个新消息、第二个新消息和第N个初始消息的总长度仍然小于第一阈值的情况下,再累加第三个新消息,计算第一个新消息、第二个新消息、第三个新消息和第N个初始消息的总长度。
以此类推,直到累加到第M+1个新消息后的消息长度大于或等于第一阈值,则不再继续累加新消息,而是输出累加到第M个新消息后的消息(即由第一个新消息、第二新消息、…、第M个新消息以及第N个初始消息构成),该消息是一个合并消息。
在直到累加到第M+1个新消息后的消息长度大于或等于第一阈值的情况下,第M+1个新消息与第N个初始消息不进行合并,并将第M+1个新消息根据时间序列***初始消息队列的末位(即队尾)。
如果第一个新消息与第N个初始消息合并后的总长度大于或等于第一阈值,也不进行消息的合并,直接将第一个新消息***初始消息队列的末位。
参照图3,由于新消息的合并,初始消息队列变为更新后的初始消息队列,BLE数据传输层从更新后的初始消息队列依次取消息,按照串行发送的方式,一个接着一个发送消息。在合并过程中按照更新后的初始消息队列中多个消息的排列顺序依次将第一个初始消息、第二个初始消息…第N-1个初始消息、合并消息进行发送。未合并之前,按照初始消息队列中多个消息的排列顺序依次将第一个初始消息、第二个初始消息…第N-1个初始消息、第N个初始消息进行发送。需要说明的是,当确定需要合并消息的情况下,在合并之前或者在合并的过程中,第一个初始消息、第二个初始消息…第N-1个初始消息也在同时进行发送。
在一些实施例中,第一阈值可以按字节设置。例如可以设置为509字节。在另一些实施例中,第一阈值还可以按位(比特)或字设置。
需要说明的是,本发明实施例对第一阈值的大小和单位不做具体的限定,可以根据实际的发送要求设置。
继续对上述操作S230中还包含的情况进行说明。
图4示意性示出了根据本发明实施例的合并第N个初始消息和新消息的流程图。
如图4所示,该实施例的在至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下,合并新消息和第N个初始消息,得到合并消息,包括操作S231~操作S233。
在操作S231,判断初始队列中初始消息的个数是否大于等于第二阈值。
在操作S232,在N大于等于第二阈值的情况下,再判断至少一个新消息与第N个初始消息的总长度是否小于第一阈值。
在操作S233,在至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下,合并至少一个新消息和第N个初始消息,得到合并消息。
具体地,获取至少一个新消息后,先计算初始消息队列中初始消息的个数,将初始消息队列中初始消息的个数记为N。例如,第二阈值设置为3,如果N<3,则认为没有消息堆积,如果N≥3,则认为出现了消息堆积,此时可以进行新消息与第N个初始消息的合并。合并时,在第N个初始消息上依次累加新消息,直到累加到第M+1个新消息后的消息长度大于第一阈值,得到累加至第M个新消息的合并消息,M为大于或等于0的整数。
继续对上述操作S231中判断为否的情况进行说明:
在一些实施例中,在N小于第二阈值的情况下,则将至少一个新消息根据时间序列***初始消息队列的末位。
具体地,获取至少一个新消息后,先计算初始消息队列中初始消息的个数,将初始消息队列中初始消息的个数记为N。例如,第二阈值设置为3,如果N<3,则认为没有消息堆积,无需进行消息的合并。
需要说明的是,本发明实施例对第二阈值大小的设置不做具体的限定,可以根据实际的发送要求设置。
可以理解的是,第二阈值的设置可以设置为3、4、5、6、7、8等,这里不做限定。设置第二阈值以检测消息发送是否发生堆积的情况,例如,当第二阈值设置为3,则认为当初始消息队列中的初始消息的数量小于3时,没有发生消息堆积;当初始消息队列中的初始消息数量大于或者等于3时,发生了消息堆积,那么,在消息发生堆积的情况下,进行消息的合并。
应当注意的是,消息的合并方式是将初始消息队列中的队尾消息与新消息进行合并,而不需要将初始消息队列中除队尾消息以外的其他初始消息与新消息进行合并;例如,初始消息队列中具有N个初始消息,其中,N为正整数,合并消息的方式是将第N个初始消息与新消息进行合并,第N个初始消息为初始消息队列中的队尾消息;如果消息发送未发生堆积的情况,则按照原顺序发送,不进行消息的合并,而是直接将新消息放在初始消息队列的队尾。因此,第二阈值的设置是为了及时预判消息是否发生堆积,并针对预判到可能发生消息堆积的情况及时通过消息合并,避免消息堆积的情况发生,从而实现消息发送的及时性。
图5示意性示出了根据本发明实施例的消息的结构示意图。
参照图5,在一些实施例中,消息均包括识别序列和内容序列,识别序列中包括内容序列的长度信息,内容序列为消息的数据。
其中,消息包括初始消息队列中的初始消息和新消息。
具体地,识别序列中存储有内容序列多少字节(byte)的长度信息,识别序列占据两个字节长度。不同长度的内容序列占据的字节长度不同,内容序列占据的字节长度根据内容序列的长度确定。
结合消息的结构,在判断至少一个新消息与第N个初始消息的总长度是否小于第一阈值的情况下,可以具体理解为:将第N个初始消息的内容序列长度记为L0;将第一个新消息的内容序列长度记为L1,第二个新消息的内容序列长度记为L2,…第M个新消息的内容序列长度记为LM。依次将M+1个新消息与第N个初始消息合并时,在第N个初始消息上累加至第M个新消息后的消息长度小于第一阈值,直到在第N个初始消息上累加至第M+1个新消息后的消息长度大于或等于第一阈值,则不再合并。
其中,合并至第M个新消息时,合并消息的结构为:第N个初始消息+M个新消息,则合并消息的长度为:
SumM=(2+ L0)(2+ L1)+(2+ L2)+…+(2+ LM)
合并至第M+1个新消息时,合并消息的结构为:第N个初始消息+(M+1)个新消息,则合并消息的长度为:
SumM+1=(2+ L0)(2+ L1)+(2+ L2)+…+(2+ LM)+(2+ LM+1)
第一阈值设置为509,则SumM<509,Sum M+1≥509。因此,合并消息为第N个初始消息与M个新消息合并后的消息。
在一些实施例中,在操作S210,获取初始消息队列之前包括:
响应于第一电子设备与第二电子设备的连接,触发第一电子设备扩容,得到扩容值;第一阈值小于扩容值。
其中,在获取初始消息队列前,先建立两个BLE 设备的连接。在扫描到附近的BLE设备之后,通过GATT(Generic Attribute Profile)发起连接,通过回调函数确定两个BLE设备之间是否连接成功。在两个BLE 设备连接成功后,将MTU扩容至512字节(一般的默认大小是24字节),MTU扩容成功后,缓存并标记该设备MTU扩容成功;通常为了数据传输效率最大化,数据包(合并后的消息)的大小(即第一阈值)需要小于扩容值,具体可以参照下述操作S231~操作S235中的说明,在此不再赘述。
需要说明的是,本发明实施例对MTU扩容的大小不做具体的限定,可以根据实际的应用需求,调节MTU扩容的大小。例如,MTU还可以扩容至128字节或256字节等。
同时,本发明实施例对第一阈值大小的设置不做具体的限定,需要满足,第一阈值小于扩容值,例如,当MTU扩容值为512 ,第一阈值为509,即MTU控容量空间为512 byte,其表示一个合并消息总占用509 byte空间,其中,扩容值中的剩余的3byte为蓝牙协议层传输消息需要固定占用的空间。再例如,当MTU扩容值为247时,第一阈值还可以设置为244。也就是说,第一阈值可以根据实际的发送要求结合MTU扩容值进行设置。
为了便于对数据发送方法中新消息与第N个初始消息合并方法更好的理解。现结合图6对合并过程进行详细的说明。
图6示意性示出了根据本发明实施例的数据发送方法的原理图。
参照图5和图6,消息合并包括操作S610~操作S660。
在操作S610,获取一个新消息。
在操作S620,判断初始消息队列中初始消息的个数是否大于或等于第二阈值。
在操作S630,在初始消息队列中初始消息的个数大于或等于第二阈值的情况下,获取初始消息队列中队尾的初始消息。
在操作S640,在确定初始消息队列中初始消息的个数大于等于第二阈值之后,继续判断队尾的初始消息与至少一个新消息的长度之和是否小于第一阈值。
在操作S650,在队尾的初始消息与至少一个新消息的长度之和小于第一阈值的情况下,合并新消息与队尾的初始消息,得到合并消息。
继续对上述操作S620和操作S640中判断为否的情况进行说明。
在操作S660,在初始消息队列中初始消息的个数小于第二阈值的情况下,或在队尾的初始消息与至少一个新消息的长度之和大于第一阈值的情况下(第M+1个新消息与队尾的初始消息长度之和大于第一阈值时),将新消息(或第M+1个新消息)根据时间序列***初始消息队列的末位。
例如,将初始消息队列中初始消息的个数记为N,第一阈值设置为509,第二阈值设置为3。则在N≥3的情况下,将初始消息队列中第N个初始消息与至少一个新消息进行合并。在N<3的情况下,则将至少一个新消息根据时间序列***初始消息队列的末位。在根据第一阈值判断需要进行消息合并之后,还需判断在第N个初始消息上累加M+1个新消息后消息的长度是否大于第二阈值。将第N个初始消息与M个新消息合并后的消息长度记为SumM,第N个初始消息与M+1个新消息合并后的消息长度记为SumM+1。则在SumM<509的情况下,将M个新消息与第N个初始消息合并,在SumM+1≥509的情况下,则不再合并,将第M+1个新消息***到初始消息队列的末位。
以下将基于图1描述的场景,通过图7~图8对公开实施例的数据接收方法进行详细描述。该方法用于接收上述数据发送方法中生成的合并消息。
图7示意性示出了根据本发明一实施例的数据接收方法的流程图。
如图7所示,该实施例的数据接收方法包括操作S710~操作S730,应用于第二电子设备。
在操作S710,获取合并消息。
在操作S720,根据合并消息中的至少一个消息,分别获取与至少一个消息对应的偏移量值。
其中,消息包括初始消息队列中的第N个初始消息及以第N个初始消息合并的至少一个新消息。
在操作S730,基于与至少一个消息对应的偏移量值,依次对合并消息中的至少一个消息进行解析,得到与至少一个消息分别对应的解析消息。
具体地,通常合并消息以数据包的形式进行传送。第二电子设备在接收到第一电子设备发送的合并消息的数据包后,需要对数据包进行解析。偏移量值,是指数据包在传输过程中相对于起始位置的偏移量。在网络通信中,数据包是按照一定的格式进行传输的,其中包括了一些固定的头部信息(识别序列)和变长的数据部分(内容序列)。偏移量值就是指示了数据部分相对于头部信息的起始位置的偏移量。偏移量值在解析数据包时能够帮助接收方准确的解析数据包,找到数据部分的位置并进行准确的处理。因此,根据消息的偏移量值,将合并消息中的M个新消息依次解析出来,对原始的数据包进行还原。
可以理解的是,针对发送的合并消息,能够快速的进行解析,得到完整、准确的信息。实现对消息的快速接收,并能够快速响应业务方的消息。
在一些实施例中,在操作S720,根据合并消息中的至少一个消息,分别获取与至少一个消息对应的偏移量值,包括:
根据偏移量值,依次对合并消息中每个消息分别进行解析,得到与每个消息分别对应的解析消息;其中,第一次解析的偏移量值为零,第T+1次解析的偏移量值为M个新消息的识别序列和内容序列的长度之和,M和T相等,M和T均为大于或等于0的整数。
具体地,解析时,第一次解析的偏移量值为零,第二次解析的偏移量值是合并消息中第一个新消息的识别序列和内容序列的长度之和(即2byte+ L1 byte),第三次解析的偏移量值是合并消息中第一个新消息与第二个新消息各自的识别序列和内容序列的长度之和(即2byte+ L1 byte+2byte+ L2 byte),以此类推,将合并消息中的M个新消息依次解析出来。其中,在计算偏移量值时,由于识别序列的长度固定,为2个字节,而每个新消息中识别序列存储的内容序列的长度信息。因此,读取识别序列中关于内容序列的长度信息,即可进行偏移量值的快速计算,加快解析效率,在解析数据包时能够帮助接收方准确的解析数据包,找到数据部分的位置并进行准确的处理。
图8示意性示出了根据本发明另一实施例的数据接收方法的流程图。
如图8所示,该实施例的数据接收方法还包括操作S740~操作S750,应用于第二电子设备。
在操作S740,获取子线程,子线程用于表征对至少一个解析消息进行接收的进程。
在操作S750,基于子线程,在一个解析消息解析完成后立即上报,再对下一个解析消息进行接收。
在一些实施例中,在合并消息中的一个新消息解析完成后,通过子线程,通知第二电子设备的业务层,第二电子设备的业务层进行解析消息的接收。每次解析完成后,会重新创建一个子线程通知第二电子设备的业务层有新的解析消息完成解析,无需等一个合并消息中合并的所有新消息全部解析完成再通知第二电子设备的业务层。
可以理解的是,通过子线程能够实现边解析边接收,实现对消息接收的快速响应,提升用户的体验。
图9示意性示出了根据本发明实施例的适于实现数据发送或接收方法的电子设备的方框图。
如图9所示,根据本发明实施例的电子设备900包括处理器901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 903中,存储有电子设备900操作所需的各种程序和数据。处理器 901、ROM902以及RAM 903通过总线904彼此相连。处理器901通过执行ROM 902和/或RAM 903中的程序来执行根据本发明实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM902和RAM 903以外的一个或多个存储器中。处理器901也可以通过执行存储在一个或多个存储器中的程序来执行根据本发明实施例的方法流程的各种操作。
根据本发明的实施例,电子设备900还可以包括输入/输出(I/O)接口905,输入/输出(I/O)接口905也连接至总线904。电子设备900还可以包括连接至I/O接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/***中所包含的;也可以是单独存在,而未装配入该设备/装置/***中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本发明实施例的方法。
根据本发明的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。例如,根据本发明的实施例,计算机可读存储介质可以包括上文描述的ROM 902和/或RAM 903和/或ROM 902和RAM 903以外的一个或多个存储器。
本发明的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机***中运行时,该程序代码用于使计算机***实现本发明实施例所提供的物品推荐方法。
在该计算机程序被处理器901执行时执行本发明实施例的***/装置中限定的上述功能。根据本发明的实施例,上文描述的***、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分909被下载和安装,和/或从可拆卸介质911被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本发明实施例的***中限定的上述功能。根据本发明的实施例,上文描述的***、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本发明的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本发明的各个实施例中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。
以上对本发明的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。不脱离本发明的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本发明的范围之内。
Claims (13)
1.一种数据发送方法,其特征在于,应用于第一电子设备,包括:
获取初始消息队列,所述初始消息队列包括N个初始消息,所述N为正整数;
获取至少一个新消息;
在所述至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下,合并所述新消息和所述第N个初始消息,得到合并消息;
发送所述合并消息。
2. 根据权利要求1所述的方法,其特征在于,其中,所述在所述至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下 ,合并所述新消息和所述第N个初始消息,得到合并消息,包括:
在所述第N个初始消息上依次累加所述新消息,直到累加到第M+1个新消息后的消息长度大于所述第一阈值,得到累加至第M个新消息的所述合并消息,所述M为大于或等于0的整数。
3.根据权利要求1所述的方法,其特征在于,其中,所述在所述至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下,合并所述新消息和所述第N个初始消息,得到合并消息,包括:
在所述N大于等于第二阈值且所述至少一个新消息与第N个初始消息的总长度小于第一阈值的情况下,合并所述新消息和所述第N个初始消息,得到合并消息。
4.根据权利要求1所述的方法,其特征在于,其中,所述方法还包括:
在所述N小于第二阈值的情况下,将所述至少一个新消息根据时间序列***所述初始消息队列的末位。
5.根据权利要求2所述的方法,其特征在于,其中,所述方法还包括:
确定累加到第M+1个新消息后的合并消息长度大于所述第一阈值的情况下,将所述第M+1个新消息***所述初始消息队列的末位。
6.根据权利要求1-5中任一项所述的方法,其特征在于,其中,所述消息均包括识别序列和内容序列,所述识别序列中包括所述内容序列的长度信息,所述内容序列为消息的数据。
7.根据权利要求1所述的方法,其特征在于,其中,所述获取初始消息队列之前包括:
响应于所述第一电子设备与第二电子设备的连接,触发所述第一电子设备扩容,得到扩容值;
所述第一阈值小于所述扩容值。
8.一种数据接收方法,其特征在于,应用于第二电子设备,用于接收上述权利要求1-7中任一项所述的数据发送方法中的合并消息,包括:
获取合并消息;
根据所述合并消息中的至少一个消息,分别获取与所述至少一个消息对应的偏移量值;
基于与所述至少一个消息对应的偏移量值,依次对所述合并消息中的至少一个消息进行解析,得到与所述至少一个消息分别对应的解析消息。
9.根据权利要求8所述的方法,其特征在于,其中,所述根据所述合并消息中的至少一个消息,分别获取与所述至少一个消息对应的偏移量值,包括:
根据偏移量值,依次对所述合并消息中每个消息分别进行解析,得到与所述每个消息分别对应的解析消息;
其中,第一次解析的偏移量值为零,第T+1次解析的偏移量值为M个新消息的识别序列和内容序列的长度之和,M和T相等,M和T均为大于或等于0的整数。
10.根据权利要求8所述的方法,其特征在于,其中,该方法还包括:
获取子线程,所述子线程用于表征对所述至少一个解析消息进行接收的进程;
基于所述子线程,在一个所述解析消息解析完成后立即上报,再对下一个所述解析消息进行接收。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~7中任一项所述的数据发送方法,或 8~10中任一项所述的数据接收方法。
12.一种计算机可读存储介质,其特征在于,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~7或8~10中任一项所述的方法。
13.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~7或8~10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311560719.6A CN117279041A (zh) | 2023-11-20 | 2023-11-20 | 数据发送、数据接收方法、设备、介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311560719.6A CN117279041A (zh) | 2023-11-20 | 2023-11-20 | 数据发送、数据接收方法、设备、介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117279041A true CN117279041A (zh) | 2023-12-22 |
Family
ID=89218206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311560719.6A Pending CN117279041A (zh) | 2023-11-20 | 2023-11-20 | 数据发送、数据接收方法、设备、介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117279041A (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6667978B1 (en) * | 1998-07-09 | 2003-12-23 | International Business Machines Corporation | Apparatus and method for reassembling frame data into stream data |
CN101252534A (zh) * | 2008-03-28 | 2008-08-27 | 清华大学 | 通过链路层报文合并提高移动自组织网络通信容量的方法 |
CN102447530A (zh) * | 2011-11-23 | 2012-05-09 | 西安电子科技大学 | 具有容错功能的数据帧聚合方法 |
US20120124524A1 (en) * | 2010-11-15 | 2012-05-17 | Microsoft Corporation | Quick Data Share |
CN102905311A (zh) * | 2012-09-29 | 2013-01-30 | 北京傲天动联技术有限公司 | 数据报文聚合装置和数据报文聚合方法 |
CN103281728A (zh) * | 2013-05-17 | 2013-09-04 | 福建星网锐捷网络有限公司 | 报文聚合方法、装置及网络设备 |
US20140207883A1 (en) * | 2013-01-22 | 2014-07-24 | International Business Machines Corporation | Synchronous conferencing with aggregation of messages |
US20140359035A1 (en) * | 2013-05-28 | 2014-12-04 | Convida Wireless, Llc | Data aggregation |
WO2017142575A1 (en) * | 2016-02-19 | 2017-08-24 | Intel Corporation | Maximum transmission unit (mtu) size reconfiguration for an lwip operation |
CN110134534A (zh) * | 2019-05-17 | 2019-08-16 | 普元信息技术股份有限公司 | 基于nio针对大数据分布式***进行消息处理优化的***及方法 |
CN113438233A (zh) * | 2021-06-21 | 2021-09-24 | 北京交通大学 | 一种协议之间相互转换的方法 |
CN114390004A (zh) * | 2022-03-24 | 2022-04-22 | 成都数联云算科技有限公司 | 一种报文处理方法及***及装置及介质 |
CN115956387A (zh) * | 2020-08-17 | 2023-04-11 | 三星电子株式会社 | 用于在IoT通信***中聚合和交换消息的方法和*** |
-
2023
- 2023-11-20 CN CN202311560719.6A patent/CN117279041A/zh active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6667978B1 (en) * | 1998-07-09 | 2003-12-23 | International Business Machines Corporation | Apparatus and method for reassembling frame data into stream data |
CN101252534A (zh) * | 2008-03-28 | 2008-08-27 | 清华大学 | 通过链路层报文合并提高移动自组织网络通信容量的方法 |
US20120124524A1 (en) * | 2010-11-15 | 2012-05-17 | Microsoft Corporation | Quick Data Share |
CN102447530A (zh) * | 2011-11-23 | 2012-05-09 | 西安电子科技大学 | 具有容错功能的数据帧聚合方法 |
CN102905311A (zh) * | 2012-09-29 | 2013-01-30 | 北京傲天动联技术有限公司 | 数据报文聚合装置和数据报文聚合方法 |
US20140207883A1 (en) * | 2013-01-22 | 2014-07-24 | International Business Machines Corporation | Synchronous conferencing with aggregation of messages |
CN103281728A (zh) * | 2013-05-17 | 2013-09-04 | 福建星网锐捷网络有限公司 | 报文聚合方法、装置及网络设备 |
US20140359035A1 (en) * | 2013-05-28 | 2014-12-04 | Convida Wireless, Llc | Data aggregation |
WO2017142575A1 (en) * | 2016-02-19 | 2017-08-24 | Intel Corporation | Maximum transmission unit (mtu) size reconfiguration for an lwip operation |
CN110134534A (zh) * | 2019-05-17 | 2019-08-16 | 普元信息技术股份有限公司 | 基于nio针对大数据分布式***进行消息处理优化的***及方法 |
CN115956387A (zh) * | 2020-08-17 | 2023-04-11 | 三星电子株式会社 | 用于在IoT通信***中聚合和交换消息的方法和*** |
CN113438233A (zh) * | 2021-06-21 | 2021-09-24 | 北京交通大学 | 一种协议之间相互转换的方法 |
CN114390004A (zh) * | 2022-03-24 | 2022-04-22 | 成都数联云算科技有限公司 | 一种报文处理方法及***及装置及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106998485B (zh) | 视频直播方法及装置 | |
US20240045641A1 (en) | Screen sharing display method and apparatus, device, and storage medium | |
CN106488273A (zh) | 一种传输直播视频的方法和装置 | |
CN110535661B (zh) | 基于区块链的业务处理方法、装置、电子设备和存储介质 | |
US11671678B2 (en) | Method and device, equipment, and storage medium for data processing | |
US9558718B2 (en) | Streaming video data in the graphics domain | |
CN114221909B (zh) | 数据传输方法、装置、终端及存储介质 | |
CN113364767B (zh) | 一种流媒体数据显示方法、装置、电子设备及存储介质 | |
WO2019140963A1 (zh) | 数据传输 | |
CN113542856A (zh) | 在线录像的倒放方法、装置、设备和计算机可读介质 | |
CN111478916B (zh) | 基于视频流的数据传输方法、设备和存储介质 | |
CN113141520B (zh) | 视频流传输方法、装置、电子设备及存储介质 | |
US9571425B2 (en) | Method and apparatus for voice communication based on voice activity detection | |
CN109104581B (zh) | 一种无线传屏的方法、***及接收终端 | |
CN117279041A (zh) | 数据发送、数据接收方法、设备、介质及程序产品 | |
CN113242446B (zh) | 视频帧的缓存方法、转发方法、通信服务器及程序产品 | |
CN112887742B (zh) | 直播流处理方法、装置、设备及存储介质 | |
CN112040328B (zh) | 数据交互方法、装置和电子设备 | |
CN115208864A (zh) | 数据传输方法、装置、设备、车辆及存储介质 | |
CN110798700B (zh) | 视频处理方法、视频处理装置、存储介质与电子设备 | |
CN106851134B (zh) | 传输图像数据的方法、装置及*** | |
CN112417276A (zh) | 分页数据获取方法、装置、电子设备及计算机可读存储介质 | |
CN115134641B (zh) | 投屏方法、装置和电子设备 | |
CN114979712B (zh) | 视频起播方法、装置、设备及存储介质 | |
US20230379434A1 (en) | Data transmission method and apparatus |
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 |