一种数据传输方法及装置与流程

文档序号:18471266发布日期:2019-08-20 20:19阅读:133来源:国知局
一种数据传输方法及装置与流程

本申请涉及通信技术领域,具体而言,涉及一种数据传输方法及装置。



背景技术:

流式数据是一组顺序、大量、快速、连续到达的数据序列,一般情况下,数据流可被视为一个随时间延续而无限增长的动态数据集合。在流式数据发送/接收时,需要保证所有数据包有序且不丢失。

现有技术中,在传输控制协议(transmissioncontrolprotocol,tcp)中,利用滑动窗口与计时器配合使用,以保证数据的有序发送,并且确保数据包确实被接收方收到。

但是,上述方法需要预先知道带传输的数据包的数量,进而利用计时器确保每个数据包确实被接收端收到,而流式数据在传输之前,待传输的数据包的数量是未知的,因此,亟需一种传输流式数据的方法。



技术实现要素:

有鉴于此,本申请实施例的目的在于提供一种数据传输方法及装置,能够将接收到的乱序的数据包有序的转发至接收端,并且确保数据包的传输率。

第一方面,本申请实施例提供了一种数据传输方法,其中,包括:

获取当前待存放的数据包的目标序号;

根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号;

将所述当前待存放的数据包存放在所述滑动窗口中的目标位置序号。

结合第一方面,本申请实施例提供了第一方面的第一种可能的实施方式,其中,在根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号之前,还包括:

获取已存放在所述滑动窗口的数据包的序号中的最大序号;

判断所述目标序号是否大于或等于所述最大序号;

若否,则将所述当前待存放的数据包删除。

结合第一方面的第一种可能的实施方式,本申请实施例提供了第一方面的第二种可能的实施方式,其中,若所述目标序号大于所述最大序号,且小于所述最大序号与所述最大位置序号之和;所述根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号,包括:

获取所述最大序号对应数据包在所述滑动窗口存放的第一位置序号;

对所述第一位置序号与所述目标序号进行求和计算,得到第一中转值;

将所述第一中转值作为被减数,将所述最大序号作为减数,计算所述第一中转值与所述最大序号之间的差值;

将所述差值作为被除数,将所述最大位置序号作为除数,得到所述差值与所述最大位置序号对应的余数,以将所述余数作为所述当前待存放的数据包在所述滑动窗口存放的目标位置序号。

结合第一方面的第一种可能的实施方式,本申请实施例提供了第一方面的第三种可能的实施方式,其中,若所述目标序号大于或等于所述最大序号与所述最大位置序号之和;所述根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号,包括:

对当前滑动窗口中数据包对应的最大序号进行加一计算,得到第一序号;

创建所述第一序号对应的空数据包;

将所述空数据包存放在所述滑动窗口中空数据包对应的位置序号上;

判断所述目标序号是否小于所述第一序号与所述最大位置序号之和;

若是,则根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号。

结合第一方面的第三种可能的实施方式,本申请实施例提供了第一方面的第四种可能的实施方式,其中,还包括:

若否,则将所述第一序号作为当前滑动窗口中数据包对应的最大序号,执行所述对当前滑动窗口中数据包对应的最大序号进行加一计算,得到第一序号的步骤,直至所述目标序号小于所述最大序号与所述最大位置序号之和。

结合第一方面的第一种可能的实施方式,本申请实施例提供了第一方面的第五种可能的实施方式,其中,还包括:

按照所述滑动窗口中的位置序号,由小到大依次将所述滑动窗口中存放的数据包进行转发。

第二方面,本申请实施例还提供了一种数据传输装置,其中,包括:

获取模块,用于获取当前待存放的数据包的目标序号;

确定模块,用于根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号;

存放模块,用于将所述当前待存放的数据包存放在所述滑动窗口中的目标位置序号。

结合第二方面,本申请实施例提供了第二方面的第一种可能的实施方式,其中,还包括:

判断模块,用于获取已存放在所述滑动窗口的数据包的序号中的最大序号;

判断所述目标序号是否大于或等于所述最大序号;

若否,则将所述当前待存放的数据包删除。

结合第二方面的第一种可能的实施方式,本申请实施例提供了第二方面的第二种可能的实施方式,其中,若所述目标序号大于所述最大序号,且小于所述最大序号与所述最大位置序号之和;所述确定模块,具体用于:

获取所述最大序号对应数据包在所述滑动窗口存放的第一位置序号;

对所述第一位置序号与所述目标序号进行求和计算,得到第一中转值;

将所述第一中转值作为被减数,将所述最大序号作为减数,计算所述第一中转值与所述最大序号之间的差值;

将所述差值作为被除数,将所述最大位置序号作为除数,得到所述差值与所述最大位置序号对应的余数,以将所述余数作为所述当前待存放的数据包在所述滑动窗口存放的目标位置序号。

结合第二方面的第一种可能的实施方式,本申请实施例提供了第二方面的第三种可能的实施方式,其中,若所述目标序号大于或等于所述最大序号与所述最大位置序号之和;所述确定模块,具体用于:

对所述最大序号进行加一计算,得到第一序号;

创建所述第一序号对应的空数据包;

将所述空数据包存放在所述滑动窗口中空数据包对应的位置序号上;

判断所述目标序号是否小于所述第一序号与所述最大位置序号之和;

若是,则根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号。

本申请实施例提供的一种数据传输方法及装置,其中,该数据传输方法包括:获取当前待存放的数据包的目标序号;根据目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及滑动窗口的最大位置序号,确定当前待存放的数据包在滑动窗口存放的目标位置序号;将当前待存放的数据包存放在滑动窗口中的目标位置序号。通过本申请提供的数据传输方法,可以将接收到的乱序的数据包有序的转发至接收端,确保数据包的传输率;并且,在目标序号大于或等于最大序号与最大位置序号之和时,创建空数据包,补全数据流中缺失的数据包,使接收端可以按照有序,全量的逻辑来处理数据流,简化其处理逻辑,提高处理效率。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本申请实施例所提供的一种数据传输方法的流程图;

图2示出了本申请实施例所提供的另一种数据传输方法的流程图;

图3示出了本申请实施例所提供的另一种数据传输方法的流程图;

图4示出了本申请实施例所提供的一种数据传输装置的结构示意图;

图5示出了本申请实施例所提供的电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

现有技术中,在传输控制协议(transmissioncontrolprotocol,tcp)中,利用滑动窗口与计时器配合使用,以保证数据的有序发送,并且确保数据包确实被接收方收到。但是,上述方法需要预先知道带传输的数据包的数量,进而利用计时器确保每个数据包确实被接收端收到,而流式数据在传输之前,待传输的数据包的数量是未知的。针对上述问题,本申请实施例提供的一种数据传输方法及装置,可以将接收到的乱序的数据包有序的转发至接收端,并且确保数据包的传输率。

为便于对本申请实施例进行理解,首先对本申请实施例所公开的一种数据传输方法进行详细介绍。

如图1所示,为本申请实施例以服务器为执行主体时数据传输方法的流程图,具体步骤如下:

s101,获取当前待存放的数据包的目标序号。

在具体实施中,发送端将大量的数据包连续的发送给接收端,以使的接收端根据接收到的数据包进行分析。这里,数据包可以是多个设备产生的生产日志等。

本申请实施例中的服务器可以控制滑动窗口,在接收端接收数据包之前,接收数据包,然后将数据包转发给接收端,以达到将接收到的乱序的数据包有序的转发至接收端的目的。

具体的,在接收到当前待存放的数据包之后,从当前待存放的数据包中提取当前待存放的数据包的目标序号。其中,数据包的序号可以是发送端对数据包进行标定的序号,也可以是服务器按照数据包到达的时间戳来确定的,且每个数据包的序号具有唯一性。

s102,根据目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及滑动窗口的最大位置序号,确定当前待存放的数据包在滑动窗口存放的目标位置序号。

在具体实施中,服务器实时监已存放在滑动窗口的数据包的序号中的最大序号,以及滑动窗口的最大位置序号等信息。其中,滑动窗口的最大位置序号为滑动窗口中能最多能存放的数据包的个数,该个数可以根据实际需求进行设置。

在获取当前待存放的数据包的目标序号之后,根据目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及滑动窗口的最大位置序号,确定当前待存放的数据包在滑动窗口存放的目标位置序号。

在实际应用中,数据包在进行标定序号之后,可能延迟到达滑动窗口,也可能提前到达滑动窗口,因此,在确定当前待存放的数据包在滑动窗口存放的目标位置序号之前,获取已存放在滑动窗口的数据包的序号中的最大序号,并且判断目标序号是否大于或等于最大序号;若目标序号小于最大序号,也即滑动窗口已经接收了该数据包或者创建了对应的空数据包,则将当前待存放的数据包删除;若目标序号大于或等于最大序号,则按照本申请实施例提供的图2中所示的方法,来确定当前待存放的数据包在滑动窗口存放的目标位置序号,具体的,在下文中进行详细阐述,在此不做过多赘述。

s103,将当前待存放的数据包存放在滑动窗口中的目标位置序号。

在具体实施中,确定出当前待存放的数据包在滑动窗口存放的目标位置序号之后,将当前待存放的数据包存放在滑动窗口中的目标位置序号。

按照滑动窗口中的位置序号,由小到大依次将滑动窗口中存放的数据包进行转发,以使数据包可以有序的被转发至接收端。

通过本申请实施例提供的上述数据传输方法,可以将接收到的乱序的数据包有序的转发至接收端,并且确保数据包的传输率。

在判断目标序号是否大于或等于最大序号之后,若目标序号大于最大序号,则再次判断目标序号是否小于最大序号与最大位置序号之和,若目标序号小于最大序号与最大位置序号之和,则按照图2所示的方法,确定当前待存放的数据包在滑动窗口存放的目标位置序号,其中,具体步骤如下:

s201,获取最大序号对应数据包在滑动窗口存放的第一位置序号;

s202,对第一位置序号与目标序号进行求和计算,得到第一中转值;

s203,将第一中转值作为被减数,将最大序号作为减数,计算第一中转值与最大序号之间的差值;

s204,将差值作为被除数,将最大位置序号作为除数,得到差值与最大位置序号对应的余数,以将余数作为当前待存放的数据包在滑动窗口存放的目标位置序号。

例如,滑动窗口的最大位置序号为16,当前待存放的数据包的目标序号为135,服务器检测到已存放在滑动窗口的数据包的序号中的最大序号为130,且最大序号130对应数据包在滑动窗口存放的第一位置序号为3,首先,将第一位置序号3与目标序号135相加,得到第一中转值为138;然后,将第一中转值138作为被减数,将最大序号130作为减数,计算第一中转值138与最大序号130之间的差值为8;最后,将将差值8作为被除数,将最大位置序号16作为除数,得到差值8与最大位置序号16对应的余数为8,以将余数8作为当前数据包在滑动窗口存放的目标位置序号,以将当前待存放的数据包存放在滑动窗口位置序号为8的位置上。

按照该方法,可以将序号136对应的数据包存放在滑动窗口位置序号为9的位置上,将序号137对应的数据包存放在滑动窗口位置序号为10的位置上,将序号138对应的数据包存放在滑动窗口位置序号为11的位置上,一次类推。值得说明的是,服务器控制滑动窗口按照滑动窗口中的位置序号,由小到大依次将存放的数据包转发至接收端。

若确定目标序号大于或等于最大序号与最大位置序号之和,则按照图3所示的方法,确定当前待存放的数据包在滑动窗口存放的目标位置序号,其中,具体步骤如下:

s301,对当前滑动窗口中数据包对应的最大序号进行加一计算,得到第一序号;

s302,创建第一序号对应的空数据包;

s303,将空数据包存放在滑动窗口中空数据包对应的位置序号上;

s304,判断目标序号是否小于第一序号与最大位置序号之和;

s305,若是,则根据目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及滑动窗口的最大位置序号,确定当前待存放的数据包在滑动窗口存放的目标位置序号。

s306,若否,则将第一序号作为当前滑动窗口中数据包对应的最大序号,返回步骤301,直至目标序号小于最大序号与最大位置序号之和。

在具体实施中,数据包可能提前到达滑动窗口。例如,滑动窗口的最大位置序号为16,当前待存放的数据包的目标序号为146,服务器检测到已存放在滑动窗口的数据包的序号中的最大序号为130,且最大序号130对应数据包在滑动窗口存放的第一位置序号为3,服务器经过判断,确定目标序号146大于或等于最大序号130与最大位置序号16之和,则表示该当前待存放的数据包提前到达滑动窗口,并且超过了该滑动窗口允许延迟的最大限度(该滑动窗口允许延迟的最大限度为滑动窗口中能最多能存放的数据包的个数),则将当前滑动窗口中数据包对应的最大序号130进行加一计算,得到第一序号131;创建第一序号131对应的空数据包,并将该空数据包存放在滑动窗口中空数据包对应的位置序号上;其中,该空数据包对应的位置序号可以按照图2所示的方法进行确定。

在将第一序号131对应的空数据包存放在滑动窗口中空数据包对应的位置序号上之后,当前滑动窗口中已存放在滑动窗口的数据包的序号中的最大序号为第一序号131,判断目标序号146是否小于第一序号131与最大位置序号16之和。此时,确定目标序号146小于第一序号131与最大位置序号16之和,则根据目标序号146、已存放在滑动窗口的数据包的序号中的最大序号131,以及滑动窗口的最大位置序号16,确定当前待存放的数据包在滑动窗口存放的目标位置序号,具体参见图2的方法。

若仍然存在目标序号大于或等于第一序号与最大位置序号之和,则将第一序号作为当前滑动窗口中数据包对应的最大序号,返回步骤301,直至目标序号小于最大序号与最大位置序号之和。

基于同一发明构思,本申请实施例还提供了与数据传输方法对应的数据传输装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述数据传输方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参见图4所示,本申请又一实施例所提供的数据传输装置包括:

获取模块401,用于获取当前待存放的数据包的目标序号;

确定模块402,用于根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号;

存放模块403,用于将所述当前待存放的数据包存放在所述滑动窗口中的目标位置序号。

在一种实施方式中,上述数据传输装置还包括:

判断模块404,用于获取已存放在所述滑动窗口的数据包的序号中的最大序号;

判断所述目标序号是否大于或等于所述最大序号;

若否,则将所述当前待存放的数据包删除。

在另一种实施方式中,若所述目标序号大于所述最大序号,且小于所述最大序号与所述最大位置序号之和;上述确定模块402,具体用于:

获取所述最大序号对应数据包在所述滑动窗口存放的第一位置序号;

对所述第一位置序号与所述目标序号进行求和计算,得到第一中转值;

将所述第一中转值作为被减数,将所述最大序号作为减数,计算所述第一中转值与所述最大序号之间的差值;

将所述差值作为被除数,将所述最大位置序号作为除数,得到所述差值与所述最大位置序号对应的余数,以将所述余数作为所述当前待存放的数据包在所述滑动窗口存放的目标位置序号。

在又一种实施方式中,若所述目标序号大于或等于所述最大序号与所述最大位置序号之和;上述确定模块402,具体用于:

对当前滑动窗口中数据包对应的最大序号进行加一计算,得到第一序号;

创建所述第一序号对应的空数据包;

将所述空数据包存放在所述滑动窗口中空数据包对应的位置序号上;

判断所述目标序号是否小于所述第一序号与所述最大位置序号之和;

若是,则根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号。

在再一种实施方式中,上述确定模块402,还用于:

若否,则将所述第一序号作为当前滑动窗口中数据包对应的最大序号,执行所述对当前滑动窗口中数据包对应的最大序号进行加一计算,得到第一序号的步骤,直至所述目标序号小于所述最大序号与所述最大位置序号之和。

在再一种实施方式中,上述数据传输装置还包括:

转发模块405,用于按照所述滑动窗口中的位置序号,由小到大依次将所述滑动窗口中存放的数据包进行转发。

图5描述了本发明实施例提供的一种电子设备500的结构,该电子设备500包括:至少一个处理器501,至少一个网络接口504或者其他用户接口503,存放器505,至少一个通信总线502。通信总线502用于实现这些组件之间的连接通信。该电子设备500可选的包含用户接口503,包括显示器(例如,触摸屏、lcd、crt、全息成像(holographic)或者投影(projector)等),键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触摸屏等)。

存放器505可以包括只读存放器和随机存取存放器,并向处理器501提供指令和数据。存放器505的一部分还可以包括非易失性随机存取存放器(nvram)。

在一些实施方式中,存放器505存放了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:

操作系统5051,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;

应用程序模块5052,包含各种应用程序,例如桌面(launcher)、媒体播放器(mediaplayer)、浏览器(browser)等,用于实现各种应用业务。

在本发明实施例中,通过调用存放器505存放的程序或指令,处理器501用于:

获取当前待存放的数据包的目标序号;

根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号;

将所述当前待存放的数据包存放在所述滑动窗口中的目标位置序号。

可选地,处理器501执行的方法中,在根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号之前,还包括:

获取已存放在所述滑动窗口的数据包的序号中的最大序号;

判断所述目标序号是否大于或等于所述最大序号;

若否,则将所述当前待存放的数据包删除。

可选地,处理器501执行的方法中,若所述目标序号大于所述最大序号,且小于所述最大序号与所述最大位置序号之和;所述根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号,包括:

获取所述最大序号对应数据包在所述滑动窗口存放的第一位置序号;

对所述第一位置序号与所述目标序号进行求和计算,得到第一中转值;

将所述第一中转值作为被减数,将所述最大序号作为减数,计算所述第一中转值与所述最大序号之间的差值;

将所述差值作为被除数,将所述最大位置序号作为除数,得到所述差值与所述最大位置序号对应的余数,以将所述余数作为所述当前待存放的数据包在所述滑动窗口存放的目标位置序号。

可选地,处理器501执行的方法中,若所述目标序号大于或等于所述最大序号与所述最大位置序号之和;所述根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号,包括:

对当前滑动窗口中数据包对应的最大序号进行加一计算,得到第一序号;

创建所述第一序号对应的空数据包;

将所述空数据包存放在所述滑动窗口中空数据包对应的位置序号上;

判断所述目标序号是否小于所述第一序号与所述最大位置序号之和;

若是,则根据所述目标序号、已存放在滑动窗口的数据包的序号中的最大序号,以及所述滑动窗口的最大位置序号,确定所述当前待存放的数据包在所述滑动窗口存放的目标位置序号。

可选地,处理器501执行的方法中,还包括:

若否,则将所述第一序号作为当前滑动窗口中数据包对应的最大序号,执行所述对当前滑动窗口中数据包对应的最大序号进行加一计算,得到第一序号的步骤,直至所述目标序号小于所述最大序号与所述最大位置序号之和。

可选地,处理器501执行的方法中,还包括:

按照所述滑动窗口中的位置序号,由小到大依次将所述滑动窗口中存放的数据包进行转发。

本申请实施例所提供的数据传输方法及装置的计算机程序产品,包括存放了程序代码的计算机可读存放介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。

具体地,该存放介质能够为通用的存放介质,如移动磁盘、硬盘等,该存放介质上的计算机程序被运行时,能够执行上述数据传输方法,从而能够将接收到的乱序的数据包有序的转发至接收端,并且确保数据包的传输率。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存放在一个处理器可执行的非易失的计算机可读取存放介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存放在一个存放介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存放介质包括:u盘、移动硬盘、只读存放器(read-onlymemory,rom)、随机存取存放器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存放程序代码的介质。

最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1