CN108234084A - 一种数据的收发方法、装置及设备 - Google Patents
一种数据的收发方法、装置及设备 Download PDFInfo
- Publication number
- CN108234084A CN108234084A CN201711396623.5A CN201711396623A CN108234084A CN 108234084 A CN108234084 A CN 108234084A CN 201711396623 A CN201711396623 A CN 201711396623A CN 108234084 A CN108234084 A CN 108234084A
- Authority
- CN
- China
- Prior art keywords
- serial number
- data packet
- packet
- chained list
- loss
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/08—Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
-
- 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明适用于通信技术领域,提供了一种数据的收发方法、装置及设备,包括:在发送的数据包的包头中添加用于标识所述数据包的发送顺序的序号,所述序号被接收端用于识别未接收到的数据包;若所述接收端返回未接收到的数据包的序号,将所述未接收到的数据包的序号存入预先设置的丢包链表;检测所述丢包链表是否为空,若所述丢包链表不为空,向所述接收端发送所述丢包链表中存储的序号对应的数据包。所述方法通过在发送端创建了一个丢包链表,用于存储接收端未接收到的数据包的序号,然后通过发送丢包链表中的序号来解决现有技术中采用用户数据报协议进行传输时的丢包问题。
Description
技术领域
本发明属于通信技术领域,尤其涉及一种数据的收发方法、装置及设备。
背景技术
在计算机通信技术领域,为了实现网络中一台主机和另外一台主机的通信,即发送端和接收端的通信,需要设置网络协议。其中,网络协议为计算机网络中不同端的主机为进行数据交换而建立的规则、标准或约定的集合。例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了使双方能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。
传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(UserDatagram Protocol,UDP)是两种网络协议。其中,TCP协议是一种面向连接的协议,在数据发送前,需要源端和终端建立可靠连接,即需要源端和终端进行三次握手。UDP协议是一种非连接协议,传输数据之前,不需要源端和终端建立连接。相对于UDP协议,TCP协议虽然能够更大可能性的进行可靠交付,但是采用该协议进行数据传输的延时较大。由于UDP协议传输较快,所以一般的视频、音频的传输都是采用的UDP协议。但是由于UDP是一种不可靠传输协议,因此,在进行数据传输的过程中存在丢包现象,即数据无法正常交付至接收端。
发明内容
有鉴于此,本发明实施例提供了一种数据的收发方法、装置及设备,以解决现有技术中采用用户数据报协议(User Datagram Protocol,UDP)进行数据传输而导致的丢包问题。
本发明实施例的第一方面提供了一种数据的发送方法,包括:在发送的数据包的包头中添加用于标识所述数据包的发送顺序的序号,所述序号被接收端用于识别未接收到的数据包;若所述接收端返回未接收到的数据包的序号,将所述未接收到的数据包的序号存入预先设置的丢包链表;检测所述丢包链表是否为空,若所述丢包链表不为空,向所述接收端发送所述丢包链表中存储的序号对应的数据包。
本发明实施例的第二方面提供了一种数据的接收方法,包括:接收发送端发送的数据包,并获取位于所述数据包的包头中的序号,所述序号用于标识所述数据包的发送顺序;将缺失的序号存入预先设置的丢失链表;检测所述丢失链表是否为空,若所述丢失链表不为空,向所述发送端发送所述丢失链表中存储的序号,所述丢失链表中存储的序号被所述发送端用于发送对应的数据包给接收端。
本发明实施例的第三方面提供了一种数据的发送装置,包括:添加单元,用于在发送的数据包的包头中添加用于标识所述数据包的发送顺序的序号,所述序号被接收端用于识别未接收到的数据包;存储单元,用于若所述接收端返回未接收到的数据包的序号,将所述未接收到的数据包的序号存入预先设置的丢包链表;发送单元,用于检测所述丢包链表是否为空,若所述丢包链表不为空,向所述接收端发送所述丢包链表中存储的序号对应的数据包。
本发明实施例的第四方面提供了一种数据的接收装置,包括:获取单元,用于接收发送端发送的数据包,并获取位于所述数据包的包头中的序号,所述序号用于标识所述数据包的发送顺序;存储单元,用于将缺失的序号存入预先设置的丢失链表;反馈单元,用于检测所述丢失链表是否为空,若所述丢失链表不为空,向所述发送端发送所述丢失链表中存储的序号,所述丢失链表中存储的序号被所述发送端用于发送对应的数据包给接收端。
本发明实施例的第五方面提供了一种数据的发送设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上所述一种数据的发送方法的步骤。
本发明实施例的第六方面提供了一种数据的接收设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上所述一种数据的接收方法的步骤。
本发明实施例的第七方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述方法的步骤。
本发明实施例与现有技术相比存在的有益效果是:
本发明实施例提供了一种数据的收发方法、装置及设备,在发送端创建了一个丢包链表,用于存储接收端未接收到的数据包的序号,然后发送端在检测到丢包链表为非空的时候,发送丢包链表中存储的序号所对应的数据包,以使接收端能够再次接收该已经丢失的数据包,解决了采用传统的UDP协议进行传输导致的丢包的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例提供的数据传输的示意图;
图2示出了本发明实施例提供UDP报文的示意图;
图3示出了本发明实施例提供的数据的发送方法的实现流程示意图;
图4示出了本发明实施例提供的修改的协议的示意图;
图5示出了本发明实施例提供的丢包链表中序号所对应的数据包的一种收发方法的示意图;
图6示出了本发明实施例提供的数据的接收方法的实现流程示意图;
图7示出了本发明实施例提供的数据的发送装置的示意图;
图8示出了本发明实施例提供的数据的接收装置的示意图;
图9示出了本发明实施例提供的数据的发送设备的示意图;
图10示出了本发明实施例提供的数据的接收设备的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解的是,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了更好的说明本发明实施例,下面以视频数据的传输为例,首先对网络中发送端和接收端收发数据的过程进行讲解。如图1(a)所示,发送端包括:通过输入模块中的高清晰度多媒体接口(High Definition Multimedia Interface,HDMI)接收输入的视频信号;利用视频编码模块中的视频编码器对该视频信号进行编码压缩,经过压缩后的视频信号存储到缓冲区中;利用无线发送模块对缓冲区中的视频信号进行发送。如图1(b)所示,接收端包括:通过无线接收模块接收发送端发送过来的视频信号;利用视频解码模块对接收到的视频信号进行解码;最后通过输出模块对已经解码后的视频信号进行输出、播放。
在无线发送模块和无线接收模块中,利用用户数据报协议(User DatagramProtocol,UDP)来对缓冲区中的视频信号进行发送和接收。在这里,为增进对该协议的理解,首先介绍下UDP协议的报文格式,如图2所示,包括:2个字节的源端口号,发送端将数据包通过源端口发送出去;2个字节的目的端口号,接收端通过目的端口接收数据包;2个字节的UDP长度;2个字节的UDP校验号以及长度不固定的数据部分。其中,1个字节的长度为8位;端口号为用于标志端口的唯一标识,即不同的端口具有不同的端口号;数据部分用于存放需要发送的数据。在这些背景的基础上,为了更清楚的说明本发明方案,下面通过具体的实施例来进行说明。
实施例一
图3示出了本发明实施例一提供的数据的发送方法的实现流程,详述如下:
在步骤S101中,在发送的数据包的包头中添加用于标识所述数据包的发送顺序的序号,所述序号被接收端用于识别未接收到的数据包。
发送端向接收端发送数据是通过发送数据包的形式进行的,即发送端将待发送的数据存储在数据包中进行发送,且发送端每次向接收端发送一个数据包。为了使接收端能够判断是否有数据包没有被接收到,在本发明实施例中,在发送端发送的数据包的包头中添加了用于标识所述数据包的发送顺序的序号,然后接收端根据接收到的数据包的序号是否连续来判断是否有数据包没有被接收到,即所述序号被接收端用于识别未接收到的数据包,以识别是否发生丢包现象。具体地,如果接收端接收到的数据包的序号连续,例如,接收端接收到的数据包的序号为1,2,3,4,5,则认为发送端发送的数据都被接收端接收,没有丢包;如果接收端接收到的数据包的序号不连续,例如,接收端接收到的数据包的序号为1,2,3,4,6,序号为5的数据包没有被接收端接收,则认为发送端发送的数据没有被接收端完全接收,发生了丢包,且丢包的序号为5。
如图4(a)所示,在本发明实施例中,在UDP报文的包头前面添加了新的内容:控制位和序号位,得到修改的协议。控制位的值用于反映包的类型,包括控制类型和接收类型,其中,控制类型包括握手类型和丢包反馈类型,甚至还可以包括其他的控制类型,在这里不做具体的限定;序号位用于存放与数据包类型相对应的数据。例如,假设控制位的值为1,代表包的类型是控制类型,在此基础上,通过判断该包序号位存放的数据进一步判断该包的具体类型,例如,假设序号位的值为0,判断该数据包的具体类型为握手类型,如图4(b)所示;假设序号位为1,判断该数据包的具体类型为丢包反馈类型,如图4(c)所示,同时,当该数据包为丢包反馈类型的时候,UDP报文数据部分存放的是接收端未接收到的数据包的序号,即丢包序号。再如,假设控制位的值为0,代表数据包的类型是接收类型,此时,序号位用于存放数据包的序号,如图4(d)所示,且该序号用于标识数据包的发送顺序,例如,图4(d)中序号位的值为15,表示这个数据包是第15个发送的数据包,这样,接收端在接收到该包后能够根据该序号判断是否发生丢包。在本发明实施例中,只有接收类型的数据包的数据部分才会存储视频数据和/或音频数据,或其他需要接收端输出、播放的数据,控制类型的包不会存储视频数据和/或音频数据,因此,只有接收类型的数据包接收端才会进行接收,对于控制类型的包,在接收到之后将用于控制终端去执行某些操作,例如握手操作、丢包反馈操作。控制位和序号位的位数可以根据具体的需求进行设置,例如,设置控制位的位数为1,序号位的位数为31。
发送端可以是计算机,也可以是手机,还可以是平板电脑,即可以是任何支持该修改的协议的终端,发送端甚至还可以不是一个终端,例如,发送端是支持该修改的协议的单片机或者是现成可编程门阵列(Field-Programmable Gate Array,FPGA)。
在步骤S102中,若所述接收端返回未接收到的数据包的序号,将所述未接收到的数据包的序号存入预先设置的丢包链表。
通过对UDP协议的修改,得到修改的协议,这样,每个接收类型的数据包都具有一个序号。由于发送端发送的接收类型的数据包都有序号,因此,当接收端在接收到序号不连续的接收类型的数据包的时候,会通过丢包反馈类型的数据包向发送端反馈丢包序号,以使发送端的丢包链表对这些序号进行存储,即若所述接收端返回未接收到的数据包的序号,则将所述未接收到的数据包的序号存入丢包链表。其中,丢包链表为发送端预先设置的用于存储接收端没有接收到的数据包的序号的链表,该丢包链表在设置的时候为空,即丢包链表在设置的时候不包含任何序号。例如,假设现在需要发送端向接收端发送序号为1~16的数据包,且经过一定时间的发送和接收,接收端已接收到的数据包的序号是1~5,可以看出,接收端已接收到的包的最大序号为5,假设接收端当前接收到的数据包的序号是8,那么很显然,序号为6和7的数据包接收端并没有接收到,而后发送的序号为8的数据包却被收到了,因此,可能发生了丢包,此时,为了使接收端能够再次接收到序号为6和7的数据包,接收端会向发送端返回未接收到的数据包的序号6和7,以使发送端的丢包链表对丢包序号6和7进行存储,而后再通过丢包链表发送与这两个序号所对应的数据包。
在本发明实施例中,丢包链表包含丢包序号。可选的,设置丢包区域,包含:丢包序号和与该丢包序号对应的数据包。由于丢包区域包括丢包序号及与该丢包序号对应的数据包,使得发送端能够直接根据丢包区域中存储的丢包序号,在丢包区域中直接发送与该丢包序号对应的数据包,加快了包的发送时间、降低了终端资源消耗。如果不包括丢包区域,只包括丢包链表,那么,发送端需要根据丢包链表中存储的丢包序号,从缓冲区找到该序号对应的数据包之后再发送该数据包。
在步骤S103中,检测所述丢包链表是否为空,若所述丢包链表不为空,向所述接收端发送所述丢包链表中存储的序号对应的数据包。
在本发明实施例中,检测所述丢包链表是否为空,若所述丢包链表不为空,向所述接收端发送所述丢包链表中存储的序号对应的数据包。其中,检测丢包链表是否为空就是检测丢包链表中是否存储有丢包序号,如果没有,丢包链表为空;如果有至少一个丢包序号,则丢包链表不为空,向所述接收端发送所述丢包链表中存储的序号对应的数据包。例如,假设检测到丢包链表中存储有两个序号:序号6和序号7,假设这两个序号所对应的数据包为A1和A2,那么发送端需要再次发送数据包A1和A2。发送过程为:假设先检测到数据包A1,那么发送数据包A1,当A1发送出去后,记录数据包A1的发送时间为t1,然后在等待(SND–t1)时间后,继续检测丢包链表中是否有包需要发送,其中,SND为数据包的发送时间间隔。这时候会检测到丢包链表中还有序号7,那么发送端发送数据包A2,当A2发送出去后,记录包A2的发送时间为t2,然后在等待(SND–t2)时间后,继续检测丢包链表是否为空,这时候丢包链表中的序号已经发送完毕,丢包链表为空,发送端开始检测缓冲区是否有数据需要进行发送,如果有,则开始发送缓冲区的数据包。
在发送丢包链表中的丢包序号对应的数据包的时候,可以按序号从小到大的顺序进行发送,也可以按照序号从大到小的顺序进行发送,甚至可以不按顺序进行随机发送。在本发明实施例中,优选地,按照序号从小到大的顺序进行发送,这样,接收端接收到的丢失的数据包的序号顺序也是从小到大的顺序。如果丢失链表中的丢包序号对应的数据包按照从小到大的序号顺序进行发送,那么接收端在接收到丢失数据包之后,能够更加方便的对这些包进行重组,即接收端在接收到丢失数据包之后不用判断序号顺序,而能够直接根据接收到的丢失数据包的时间顺序将接收到的丢失数据包依次插入接收端接收到的数据包的序列中,如图5所示。
由于在采用UDP协议进行数据传输的时候,接收端不会向发送端反馈其收包情况,即接收端不会向发送端反馈其是否接收到发送端发送的数据包,因此,发送端会一直向接收端发包,即使接收端并没有收到发送端发送的数据包,发送端仍然会一直发送,这样导致接收端只能接收顺利到达接收端的数据包,而不能接收丢失的数据包。而本发明实施例在发送端创建了一个丢包链表,用于存储接收端未接收到的数据包的序号,然后发送端在检测到丢包链表为非空的时候发送丢包链表中存储的丢包序号对应的数据包,以使接收端能够再次接收该已经丢失的数据包,解决了采用传统的UDP协议进行传输导致的丢包的问题。
优选地,所述数据的发送方法还包括:将所述丢包链表中存储的序号删除。
在本发明实施例中,丢包链表中存储的丢包序号所对应的数据包被发送之后,会在丢包链表中删除这个序号,防止发送端再次发送这个序号所对应的数据包。例如,丢包链表为非空,且丢包链表中存储有一个序号5,那么首先发送序号为5的数据包,在发送完成之后,如果不在丢包链表中对序号5进行删除,那么发送端会重新检测到丢包链表状态为非空且存有序号5,此时,发送端会继续发送序号5对应的数据包,导致该数据包的循环发送。所以,在发送所述丢包链表中存储的所述序号所对应的数据包之后,还包括:将所述丢包链表中存储的序号删除,防止该数据包重复发送。
实施例二
图6示出了本发明实施例二提供的数据的接收方法的实现流程,本发明实施例二提供的数据的接收方法与本发明实施例一提供的数据的发送方法相对应,其中内容可互相适用,详述如下:
在步骤S201中,接收发送端发送的数据包,并获取位于所述数据包的包头中的序号,所述序号用于标识所述数据包的发送顺序。
接收端与发送端对应,发送端发送数据,接收端接收发送端发送的数据。故接收端也可以是计算机、手机或平板电脑,即接收端也可以是任何支持修改的协议的终端,接收端甚至还可以不是一个终端,例如,接收端是支持修改的协议的单片机或者是现成可编程门阵列(Field-Programmable Gate Array,FPGA)。接收端与发送端并不是绝对的接收端与发送端,即发送端也可以用作接收端来接收数据,接收端也可以用作发送端来发送数据。
在本发明实施例中,数据包的序号位设置在数据包的包头中,由于发送端发送的接收类型的数据包的包头中包含该数据包的序号位,且序号位中的序号用于标识数据包的发送顺序,因此,接收端能够根据接收到的数据包的序号来判断是否发生丢包。
在步骤S202中,将缺失的序号存入预先设置的丢失链表。
丢失链表为接收端预先设置的用于存储接收端没有接收到的数据包的序号的链表,丢失链表在创建的时候为空,即丢失链表在创建的时候不包含任何序号。
在本发明实施例中,接收端在正常情况下都能够接收到发送端发送的数据包,但是,当网络拥塞,或者接收端这边出现暂时断网等情况的时候,接收端很可能不能接收到发送端发送的数据包,从而导致丢包,而当网络通畅或者接收端这边网络恢复之后,接收端又能正常接收发送端发送的数据包,显然,这个时候很可能已经发生了丢包。例如,假设在第一阶段,接收端和发送端网络均正常,接收端接收到发送端发送的数据包的序号为1,2,3,4,5;第二阶段,接收端断网,而发送端网络正常,继续向接收端发送序号为6,7,8的数据包,而接收端由于断网则无法接收这三个数据包;第三阶段,接收端网络恢复,发送端继续发送序号为9的数据包,接收端接收该序号为9的数据包,显然,数据包6,7,8丢失,接收端没有接收到。如上所述,当接收端又正常接收发送端发送的数据包的时候,已经发生了丢包,此时,将缺失的序号存入预先设置的丢失链表,包括:获取接收端接收到的数据包的最大序号和当前序号,其中,最大序号为接收端已经接收到的数据包的序号的最大值,不包括当前序号,当前序号为接收端当前接收到的数据包的序号;计算当前序号与最大序号的差值,若该差值大于1,则出现了接收端接收到的数据包的序号不连续的情况,发生了丢包;将缺失的序号存入预先设置的丢失链表,其中缺失的序号为介于最大序号和当前序号之间的序号。例如,假设接收端已接收到的包的最大序号为5,当前序号为9;然后计算当前序号9与最大序号5的差值,显然该差值大于1,找个时候出现了丢包;最后将当前序号与最大序号之间的序号6,7,8存入丢失链表。
通过将缺失的序号存入预先设置的丢失链表,可以使得接收端通过丢失链表中存储的缺失的序号向发送端进行反馈,这样发送端会再次发送这些序号所对应的数据包。
在步骤S203中,检测所述丢失链表是否为空,若所述丢失链表不为空,向所述发送端发送所述丢失链表中存储的序号,所述丢失链表中存储的序号被所述发送端用于发送对应的数据包给接收端。
在本发明实施例中,接收端会对丢失链表进行检测,然后根据检测情况向发送端进行反馈,即接收端检测丢失链表是否为空,若丢失链表不为空,向发送端发送丢失链表中存储的序号,其中,丢失链表中存储的序号被发送端用于发送对应的数据包给接收端,即发送端在接收到丢失链表中存储的序号之后,会发送这些序号所对应的数据包到接收端,以使接收到能够再次接收到丢失的数据包。
由于接收端在接收到数据包之后,会计算当前序号与最大序号的差值,然后根据该差值来判断是否发生丢包,如果判断结果为发生了丢包,那么接收端会将缺失的序号存入预先设置的丢失链表,然后向发送端反馈丢失链表中的序号,以使发送端在接收到这些序号后能够重新发送这些序号所对应的数据包,从而使接收端能够再次接收到这些序号所对应的数据包,解决了采用UDP协议进行传输导致的丢包的问题。
优选地,在所述向所述发送端发送所述丢失链表中存储的序号之后,还包括:将所述丢失链表中存储的序号删除。
在本发明实施例中,在所述向所述发送端发送所述丢失链表中存储的序号之后,还包括:将所述丢失链表中存储的序号删除,包括:情况一:在所述向所述发送端发送所述丢失链表中存储的序号之后立即删除丢失链表中存储的序号;或情况二:在所述向所述发送端发送所述丢失链表中存储的序号之后,接收端接收发送端发送的数据包,若该接收的数据包的序号为丢失链表中存储的缺失的序号,则将丢失链表中存储的序号删除。在本发明实施例中,即使接收端将丢包序号发送到了发送端,发送端也确实发送了这些丢包序号所对应的数据包,但是接收端可能还是没有接收到这些数据包,所以设置情况二,在所述向所述发送端发送所述丢失链表中存储的序号之后,接收端接收到发送端发送的数据包,若该接收的数据包的序号为缺失的序号,则将所述丢失链表中存储的序号删除,保证接收端一定能接收到缺失的序号所对应的数据包。
如果采用情况二,即只有在接收端接收到缺失的序号的时候才将丢失链表中存储的序号删除,那么,很可能有一个数据包接收端怎么都接收不到,那么这个时候根据情况二所述的,接收端由于一直无法接收到该缺失的序号所对应的数据包会一直向发送端反馈这个数据包,然后发送端也一直发送这个数据包,从而陷入死循环。因此,采用情况一:即在所述向所述发送端发送所述丢失链表中存储的序号之后立即删除丢失链表中存储的序号,这样,即使接收端发生了数据包的丢失,也只向发送端反馈一次,反馈之后就立即在丢失链表中删除这个序号,从而发送端在收到这唯一一次的反馈之后也只会发送一次这个缺失的序号所对应的数据包,进而解决了这个死循环的问题。
优选地,所述获取位于所述数据包的包头中的序号,包括:获取位于所述数据包的包头中的控制位,所述控制位用于标识所述数据包的类型;若所述控制位的值指示所述数据包的类型为接收类型,则获取位于所述数据包的包头中的序号。
在本发明实施例中,数据包具有图4所示的格式,包括控制位,用于反映数据包的类型,其中,只有接收类型的数据包接收端才会进行接收,接收类型的数据包存的内容是视频和/或音频数据,或其他需要接收端输出、播放的数据,控制类型的数据包会控制接收端执行某些操作,例如握手操作、丢包反馈操作。因此,在接收端接收到数据包后需要首先通过控制位判断数据包的类型,如果是接收类型才获取位于数据包的包头中的序号,因为接收类型的数据包的包头的序号位存的是数据包的发送顺序,即所述获取位于所述数据包的包头中的序号,包括:获取位于所述数据包的包头中的控制位,所述控制位用于标识所述数据包的类型;若所述控制位的值指示所述数据包的类型为接收类型,则获取位于所述数据包的包头中的序号。如果是控制包,由于序号位存的是控制包的具体类型,所以无法获取到数据包的序号。
实施例三
图7示出了本发明实施例三提供的数据的发送装置100,包括添加单元110、存储单元120和发送单元130。
添加单元110,用于在发送的数据包的包头中添加用于标识所述数据包的发送顺序的序号,所述序号被接收端用于识别未接收到的数据包;
存储单元120,用于若所述接收端返回未接收到的数据包的序号,将所述未接收到的数据包的序号存入预先设置的丢包链表;
发送单元130,用于检测所述丢包链表是否为空,若所述丢包链表不为空,向所述接收端发送所述丢包链表中存储的序号对应的数据包。
由于在采用UDP协议进行数据传输的时候,接收端不会向发送端反馈其收包情况,即接收端不会向发送端反馈其是否接收到发送端发送的数据包,因此,发送端会一直向接收端发包,即使接收端并没有收到发送端发送的数据包,发送端仍然会一直发送,这样导致接收端只能接收顺利到达接收端的数据包,而不能接收丢失的数据包。而本发明实施例在发送端创建了一个用于丢包链表,用于存储接收端未接收到的数据包的序号,然后发送端在检测到丢包链表为非空的时候发送丢包链表中存储的丢包序号所对应的数据包,以使接收端能够再次接收该已经丢失的数据包,解决了采用传统的UDP协议进行传输导致的丢包的问题。
优选地,所述装置100还包括:删除单元,用于将所述丢包链表中存储的序号删除。
需要说明的是,本发明实施例三提出的数据的发送装置100与本发明实施例一提出的数据的发送方法基于相同的发明构思,装置实施例与方法实施例中的相应技术内容可互相适用,此处不再详述。
实施例四
图8示出了本发明实施例四提供的数据的接收装置200,包括获取单元210、反馈单元220和存储单元230。
获取单元210,用于接收发送端发送的数据包,并获取位于所述数据包的包头中的序号,所述序号用于标识所述数据包的发送顺序;
存储单元220,用于将缺失的序号存入预先设置的丢失链表;
反馈单元230,用于检测所述丢失链表是否为空,若所述丢失链表不为空,向所述发送端发送所述丢失链表中存储的序号,所述丢失链表中存储的序号被所述发送端用于发送对应的数据包给接收端。
由于接收端在接收到数据包之后,会将缺失的序号存入预先设置的丢失链表,然后向发送端反馈这些丢失链表中的序号,以使发送端在接收到这些序号后能够重新发送这些序号所对应的数据包,从而使接收端能够再次接收到这些序号所对应的数据包,解决了采用UDP协议进行传输导致的丢包的问题。
在反馈单元230之后,还包括:删除单元,用于将所述丢失链表中存储的序号删除。
所述获取单元210,包括:获取位于所述数据包的包头中的控制位,所述控制位用于标识所述数据包的类型;若所述控制位的值指示所述数据包的类型为接收类型,则获取位于所述数据包的包头中的序号。
需要说明的是,本发明实施例四提出的数据的接收装置200与本发明实施例二提出的数据的接收方法基于相同的发明构思,装置实施例与方法实施例中的相应技术内容可互相适用,此处不再详述。
实施例五
图9是本发明实施例五提供的数据的发送设备300的示意图。如图9所示,该实施例的设备300包括:处理器330、存储器310以及存储在所述存储器310中并可在所述处理器300上运行的计算机程序320。所述处理器330执行所述计算机程序320时实现上述数据的发送方法的步骤,例如图3所示的步骤S101至S103,或者所述处理器330执行所述计算机程序320时实现上述各装置100实施例中各单元的功能,例如图7所示单元110至130的功能。
示例性的,所述计算机程序320可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器310中,并由所述处理器330执行,以完成本发明。所述一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序320在所述设备300中的执行过程。
所述设备可包括但不仅限于,处理器330、存储器310。本领域技术人员可以理解,图9仅仅是设备300的示例,并不构成对设备300的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
所称处理器330可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器310可以是所述设备300的内部存储单元,例如设备300的硬盘或内存。所述存储器310也可以是所述设备300的外部存储设备,例如所述设备300上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器310还可以既包括所述设备300的内部存储单元也包括外部存储设备。所述存储器310用于存储所述计算机程序以及所述设备300所需的其他程序和数据。所述存储器310还可以用于暂时地存储已经输出或者将要输出的数据。
实施例六
图10是本发明实施例六提供的数据的接收设备400的示意图。如图10所示,该实施例的设备400包括:处理器430、存储器410以及存储在所述存储器410中并可在所述处理器400上运行的计算机程序420。所述处理器430执行所述计算机程序420时实现上述数据的发送方法的步骤,例如图6所示的步骤S201至S203,或者所述处理器430执行所述计算机程序420时实现上述各装置200实施例中各单元的功能,例如图8所示单元210至230的功能。
示例性的,所述计算机程序420可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器410中,并由所述处理器430执行,以完成本发明。所述一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序420在所述设备400中的执行过程。
所述终端可包括但不仅限于,处理器430、存储器410。本领域技术人员可以理解,图10仅仅是设备400的示例,并不构成对设备400的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
所称处理器430可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器410可以是所述设备400的内部存储单元,例如设备400的硬盘或内存。所述存储器410也可以是所述设备400的外部存储设备,例如所述设备400上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器410还可以既包括所述设备400的内部存储单元也包括外部存储设备。所述存储器410用于存储所述计算机程序以及所述设备400所需的其他程序和数据。所述存储器410还可以用于暂时地存储已经输出或者将要输出的数据。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的方法、装置及设备,可以通过其它的方式实现。例如,以上所描述的方法、装置及设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据的发送方法,其特征在于,包括:
在发送的数据包的包头中添加用于标识所述数据包的发送顺序的序号,所述序号被接收端用于识别未接收到的数据包;
若所述接收端返回未接收到的数据包的序号,将所述未接收到的数据包的序号存入预先设置的丢包链表;
检测所述丢包链表是否为空,若所述丢包链表不为空,向所述接收端发送所述丢包链表中存储的序号对应的数据包。
2.如权利要求1所述的发送方法,其特征在于,还包括:
将所述丢包链表中存储的序号删除。
3.一种数据的接收方法,其特征在于,包括:
接收发送端发送的数据包,并获取位于所述数据包的包头中的序号,所述序号用于标识所述数据包的发送顺序;
将缺失的序号存入预先设置的丢失链表;
检测所述丢失链表是否为空,若所述丢失链表不为空,向所述发送端发送所述丢失链表中存储的序号,所述丢失链表中存储的序号被所述发送端用于发送对应的数据包给接收端。
4.如权利要求3所述的接收方法,其特征在于,在所述向所述发送端发送所述丢失链表中存储的序号之后,还包括:
将所述丢失链表中存储的序号删除。
5.如权利要求3~4任一所述的接收方法,其特征在于,所述获取位于所述数据包的包头中的序号,包括:
获取位于所述数据包的包头中的控制位,所述控制位用于标识所述数据包的类型;若所述控制位的值指示所述数据包的类型为接收类型,则获取位于所述数据包的包头中的序号。
6.一种数据的发送装置,其特征在于,包括:
添加单元,用于在发送的数据包的包头中添加用于标识所述数据包的发送顺序的序号,所述序号被接收端用于识别未接收到的数据包;
存储单元,用于若所述接收端返回未接收到的数据包的序号,将所述未接收到的数据包的序号存入预先设置的丢包链表;
发送单元,用于检测所述丢包链表是否为空,若所述丢包链表不为空,向所述接收端发送所述丢包链表中存储的序号对应的数据包。
7.一种数据的接收装置,其特征在于,包括:
获取单元,用于接收发送端发送的数据包,并获取位于所述数据包的包头中的序号,所述序号用于标识所述数据包的发送顺序;
存储单元,用于将缺失的序号存入预先设置的丢失链表;
反馈单元,用于检测所述丢失链表是否为空,若所述丢失链表不为空,向所述发送端发送所述丢失链表中存储的序号,所述丢失链表中存储的序号被所述发送端用于发送对应的数据包给接收端。
8.一种数据的发送设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至2任一项所述方法的步骤。
9.一种数据的接收设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求3至5任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711396623.5A CN108234084A (zh) | 2017-12-21 | 2017-12-21 | 一种数据的收发方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711396623.5A CN108234084A (zh) | 2017-12-21 | 2017-12-21 | 一种数据的收发方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108234084A true CN108234084A (zh) | 2018-06-29 |
Family
ID=62647561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711396623.5A Pending CN108234084A (zh) | 2017-12-21 | 2017-12-21 | 一种数据的收发方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108234084A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109286477A (zh) * | 2018-10-30 | 2019-01-29 | 佛山市瑞德物联科技有限公司 | 一种支持乱序传输的数据传输方法 |
CN109525376A (zh) * | 2019-01-07 | 2019-03-26 | 北京三体云联科技有限公司 | 快速重传方法、装置及终端设备 |
CN109871277A (zh) * | 2019-01-22 | 2019-06-11 | 普联技术有限公司 | 进程间多请求管理方法、装置、终端设备及可读存储介质 |
CN109889913A (zh) * | 2019-03-21 | 2019-06-14 | 南京威翔科技有限公司 | 一种网络环境中的数据丢包的分析方法 |
CN111082896A (zh) * | 2019-12-11 | 2020-04-28 | 深圳市优必选科技股份有限公司 | 一种数据传输方法及发送、接收装置 |
CN111107050A (zh) * | 2019-10-22 | 2020-05-05 | 国网浙江省电力有限公司电力科学研究院 | 一种配电网动模系统的分布式录波方法及装置 |
CN111147196A (zh) * | 2019-12-18 | 2020-05-12 | 深圳市元征科技股份有限公司 | 数据传输方法、数据发送设备及数据接收设备 |
CN112838910A (zh) * | 2021-03-23 | 2021-05-25 | 中国科学技术大学 | 一种基于混合反馈的数据传输方法及装置 |
CN113055193A (zh) * | 2021-03-16 | 2021-06-29 | 盛立安元科技(杭州)股份有限公司 | 一种数据多播传输方法、装置、设备及存储介质 |
CN113092043A (zh) * | 2021-03-31 | 2021-07-09 | 国网四川省电力公司检修公司 | 一种铁芯松动振动数据采集方法及系统 |
CN113194129A (zh) * | 2021-04-22 | 2021-07-30 | 山东浪潮通软信息科技有限公司 | 一种数据的摆渡方法、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101159520A (zh) * | 2007-10-29 | 2008-04-09 | 中兴通讯股份有限公司 | 数据传输方法 |
CN206117730U (zh) * | 2016-10-21 | 2017-04-19 | 华南理工大学 | 基于6LoWPAN协议的物联网环境实时监测系统 |
CN106657131A (zh) * | 2017-01-09 | 2017-05-10 | 北京优音通信有限公司 | 一种基于互联网的云通讯平台 |
CN107147481A (zh) * | 2017-07-19 | 2017-09-08 | 北京数码视讯科技股份有限公司 | 丢包重传方法、装置及电子设备 |
-
2017
- 2017-12-21 CN CN201711396623.5A patent/CN108234084A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101159520A (zh) * | 2007-10-29 | 2008-04-09 | 中兴通讯股份有限公司 | 数据传输方法 |
CN206117730U (zh) * | 2016-10-21 | 2017-04-19 | 华南理工大学 | 基于6LoWPAN协议的物联网环境实时监测系统 |
CN106657131A (zh) * | 2017-01-09 | 2017-05-10 | 北京优音通信有限公司 | 一种基于互联网的云通讯平台 |
CN107147481A (zh) * | 2017-07-19 | 2017-09-08 | 北京数码视讯科技股份有限公司 | 丢包重传方法、装置及电子设备 |
Non-Patent Citations (1)
Title |
---|
红脸书生: ""UDT协议-基于UDP的可靠数据传输协议"", 《HTTP://WWW.CNBLOGS.COM/STEVEN_OYJ/ARCHIVE/2010/05/29/1747056.HTML》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109286477A (zh) * | 2018-10-30 | 2019-01-29 | 佛山市瑞德物联科技有限公司 | 一种支持乱序传输的数据传输方法 |
CN109525376A (zh) * | 2019-01-07 | 2019-03-26 | 北京三体云联科技有限公司 | 快速重传方法、装置及终端设备 |
CN109525376B (zh) * | 2019-01-07 | 2021-12-03 | 北京世纪好未来教育科技有限公司 | 快速重传方法、装置及终端设备 |
CN109871277A (zh) * | 2019-01-22 | 2019-06-11 | 普联技术有限公司 | 进程间多请求管理方法、装置、终端设备及可读存储介质 |
CN109889913A (zh) * | 2019-03-21 | 2019-06-14 | 南京威翔科技有限公司 | 一种网络环境中的数据丢包的分析方法 |
CN111107050B (zh) * | 2019-10-22 | 2021-10-22 | 国网浙江省电力有限公司电力科学研究院 | 一种配电网动模系统的分布式录波方法及装置 |
CN111107050A (zh) * | 2019-10-22 | 2020-05-05 | 国网浙江省电力有限公司电力科学研究院 | 一种配电网动模系统的分布式录波方法及装置 |
CN111082896A (zh) * | 2019-12-11 | 2020-04-28 | 深圳市优必选科技股份有限公司 | 一种数据传输方法及发送、接收装置 |
CN111147196A (zh) * | 2019-12-18 | 2020-05-12 | 深圳市元征科技股份有限公司 | 数据传输方法、数据发送设备及数据接收设备 |
CN113055193A (zh) * | 2021-03-16 | 2021-06-29 | 盛立安元科技(杭州)股份有限公司 | 一种数据多播传输方法、装置、设备及存储介质 |
CN112838910A (zh) * | 2021-03-23 | 2021-05-25 | 中国科学技术大学 | 一种基于混合反馈的数据传输方法及装置 |
CN113092043A (zh) * | 2021-03-31 | 2021-07-09 | 国网四川省电力公司检修公司 | 一种铁芯松动振动数据采集方法及系统 |
CN113194129A (zh) * | 2021-04-22 | 2021-07-30 | 山东浪潮通软信息科技有限公司 | 一种数据的摆渡方法、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108234084A (zh) | 一种数据的收发方法、装置及设备 | |
TWI242946B (en) | Wireless packet communication apparatus and method | |
CN105050083B (zh) | 一种智能设备的网络配置方法及系统 | |
CN103547342B (zh) | 消息发送方法、消息阅读通知方法、消息接收方法及装置 | |
CN100527738C (zh) | 删除服务数据单元序列的方法及通讯装置 | |
CN107888344B (zh) | 一种误码检测的方法、设备和系统 | |
CN102377650A (zh) | 数据发送处理方法、装置和系统 | |
CN111224903B (zh) | 一种数据传输方法、设备及计算机可读存储介质 | |
CN101977358A (zh) | 一种数据短信的传输方法、装置及设备 | |
CN107508828B (zh) | 一种超远程数据交互系统及方法 | |
CN108880760A (zh) | 一种基于北斗卫星的大数据量可靠通信方法 | |
CN113179215B (zh) | 组网通信方法、系统、节点设备、存储介质和电子设备 | |
CN114222254A (zh) | 配网方法、装置及存储介质 | |
KR20190103326A (ko) | 데이터 전송 방법, 장치, 송신단, 수신단 및 시스템 | |
CN110557446B (zh) | 通过att和数据分割重组来适配的通信方法及系统 | |
CN109067922A (zh) | 一种数据传输方法及装置 | |
CN108076535A (zh) | 无线资源控制连接的控制方法、装置、终端及存储介质 | |
CN101631074B (zh) | 一种多链路报文发送方法、装置和网络设备 | |
KR100894856B1 (ko) | 통신 장치의 주변 모듈을 위한 전송 계층 프로토콜 | |
CN107360594B (zh) | 一种信息处理方法及装置 | |
KR20070071668A (ko) | 병렬 데이터 송수신기능을 갖는 이동통신단말기 및 그데이터 송수신 방법 | |
CN109286476A (zh) | 一种传输数据的方法、接收端及发送端 | |
CN114826591A (zh) | 一种跨设备的数据传输方法、系统及终端 | |
CN103974287B (zh) | 一种进行拓扑扫描的方法、基站以及bbu和rru | |
CN109309647B (zh) | 一种传输协议的协商方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180629 |
|
RJ01 | Rejection of invention patent application after publication |