一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据重传方法、系统及相关装置与流程

2022-02-24 17:45:44 来源:中国专利 TAG:


1.本技术涉及无线通信技术领域,尤其涉及数据重传方法、系统及相关装置。


背景技术:

2.随着无线通讯技术的发展,智能手机、平板电脑等终端开始支持用户快速分享文件。在文件分享的过程中,若当前网络环境较差或者接收端处理能力弱时,使得传输的数据帧丢失,然而目前重传丢失数据帧的效率较低,导致文件传输时延较长,从而出现卡顿的问题。
3.如何提高数据重传效率,则是亟待解决的问题。


技术实现要素:

4.本技术提供一种数据重传方法、系统及相关装置。该方法可以实现:避免在待重传的多个丢失数据帧属于同一文件的情况下,第一设备生成每个丢失数据帧时重复执行读取同一文件的i/o操作,进而提升了数据重传效率,提高用户体验感。
5.第一方面,本技术提供一种数据重传方法,该方法应用于包括第一设备和第二设备的通信系统;该方法包括:该第一设备从nvm中读取待分享文件至ram,并生成该待分享文件的多个数据帧;该待分享文件包括第一文件;该第一设备基于与该第二设备建立的连接,向该第二设备发送该多个数据帧;该第二设备确定该多个数据帧中该第二设备没接收到的多个丢失数据帧的标识信息;该第二设备向该第一设备发送该多个丢失数据帧的标识信息;该多个丢失数据帧包括多个第一丢失数据帧;该多个第一丢失数据帧属于该第一文件;该第一设备从该nvm中一次读取该第一文件至该ram,并生成该多个第一丢失数据帧;该第一设备从该ram中删除该第一文件;该第一设备向该第二设备发送该多个第一丢失数据帧。
6.实施第一方面提供的方法,第一设备可以实现:避免在待重传的多个丢失数据帧属于同一文件的情况下,第一设备生成每个丢失数据帧时重复执行读取同一文件的i/o操作,即重复执行将第一文件从nvm中读取至ram,然后删除ram中的第一文件。进而提升了数据重传效率,提高用户体验感。
7.结合第一方面提供的方法,该第一设备从该nvm中一次读取该第一文件至该ram,并生成该多个第一丢失数据帧,具体包括:该第一设备基于该多个丢失数据帧的标识信息,确定该多个丢失数据帧中第一个丢失数据帧为该第一文件中的数据帧时,该第一设备从该nvm一次读取该第一文件至该ram,基于该ram中的该第一文件和该第一个丢失数据帧的标识信息生成该第一个丢失数据帧;当确定该多个丢失数据帧中第二个丢失数据帧为该第一文件中的数据帧时,该第一设备基于该ram中的该第一文件和该第二个丢失数据帧的标识信息生成该第二个丢失数据帧。
8.结合第一方面提供的方法,该第一设备从该ram中删除该第一文件,具体包括:当该待分享文件还包括第二文件时,该第一设备基于该多个丢失数据帧的标识信息,当确定该多个丢失数据帧中第三个丢失数据帧为该第二文件中的数据帧时,该第一设备从该ram
中删除该第一文件;或者,当该第二个丢失数据帧为该多个丢失数据帧中最后一个丢失数据帧时,该第一设备从该ram中删除该第一文件。
9.这样,第一设备在生成待重传的丢失数据帧的过程中,可以判断下一个待重传的丢失数据帧和当前丢失数据帧是否属于同一个文件,若是,则先不从ram中删除第一文件。若不是,则待生成该下一个待重传数据帧之后,再从ram中删除第一文件,即释放资源。或者若当前丢失数据帧为多个丢失数据帧中最后一个丢失数据帧,则再从ram中删除第一文件,即释放资源。可以进一步避免,第一设备即重复执行将第一文件从nvm中读取至ram,然后删除ram中的第一文件,进而提升了数据重传效率,提高用户体验感。
10.结合第一方面提供的方法,当确定该多个丢失数据帧中第三个丢失数据帧为该第二文件中的数据帧时,该第一设备从该ram中删除该第一文件之后,该方法还包括:该电子设备从该nvm一次读取该第二文件至该ram,基于该ram中的该第二文件和该第三个丢失数据帧的标识信息生成该第三个丢失数据帧;该第一设备向该第二设备发送该第三个丢失数据帧。
11.这样,当第一设备判断下一个待重传的丢失数据帧和当前丢失数据帧不属于同一个文件,则打开第二文件,生成第二文件包含的丢失数据帧。
12.结合第一方面提供的方法,该第一设备从该nvm中一次读取该第一文件至该ram,并生成该多个第一丢失数据帧,具体包括:该第一设备基于该多个丢失数据帧的标识信息,确定出该多个丢失数据帧包括该第一文件中的该多个第一丢失数据帧;该第一设备从该nvm一次读取该第一文件至ram,基于该ram中的该第一文件和该多个第一丢失数据帧的标识信息生成该多个第一丢失数据帧。
13.这样,第一设备可以从多个丢失数据帧的标识信息时,可以一次获取到属于同一文件的丢失数据帧的标识信息,然后打开该同一文件,生成属于同一文件的丢失数据帧。无需读一个丢失数据帧的标识信息,生成该丢失数据帧,再读下一个,再生成下一个丢失数据帧。进而增加本方案的多种实施方式。
14.结合第一方面提供的方法,该多个数据帧的标识信息包括该多个数据帧分别对应的帧号和文件id;或者,该多个数据帧的标识信息包括该多个数据帧分别对应的帧号。
15.这样,第二设备向第一设备发送的指示待重传的丢失数据帧的标识信息可以由多种类型。
16.结合第一方面提供的方法,当该多个数据帧的标识信息包括该多个数据帧分别对应的帧号和文件id时,该多个数据帧的帧格式包括数据部分、帧号和文件id;当该多个数据帧的标识信息包括该多个数据帧分别对应的帧号时,该多个数据帧的帧格式包括数据部分和帧号。
17.这样,第一设备可以采用多种方式生成数据帧。
18.结合第一方面提供的方法,当该多个数据帧的帧格式包括数据部分和帧号时,该第一设备向该第二设备发送该多个数据帧具体包括:该第一设备向该第二设备发送该多个数据帧中该第一文件的多个第一文件数据帧;在发送完该多个第一文件数据帧之后,向该第二设备发送定界符;该定界符用于指示该第一文件发送完毕。
19.这样第二设备可以根据第一设备发送的指示第一文件发送完毕的指示信息,接收并生成第一文件。
20.结合第一方面提供的方法,在该第一设备向该第二设备发送该多个数据帧的过程中,该方法还包括:该第一设备输出第一信息,该第一信息用于指示该多个数据帧的发送进度。
21.这样,第一设备可以输出文件分享进度的提示信息,提高用户体验。
22.结合第一方面提供的方法,该第一设备向该第二设备发送该多个数据帧之前,该方法还包括:该第一设备接收到将该待分享文件分享至该第二设备的第一操作;响应于该第一操作,该第一设备与该第二设备建立该连接;该连接包括:wifi p2p连接,bt连接、uwb连接。
23.这样,第一设备可以根据用户操作向第二设备发送待分享文件。
24.结合第一方面提供的方法,该第一设备接收到该第一操作之前,该方法包括:第一设备通过无线通信模块搜索到该第二设备;该无线通信模块包括但不限于wlan模块、bt模块和uwb模块。该第一设备显示该第二设备对应的选项;该第一操作为作用于该第二设备对应的选项上的操作。
25.这样,第一设备分享文件的对象可以由用户主动选择。
26.第二方面,本技术提供了一种数据重传方法,该方法应用于第一设备,该方法包括:该第一设备从nvm中读取待分享文件至ram,并生成该待分享文件的多个数据帧;该待分享文件包括第一文件;该第一设备基于与该第二设备建立的连接,向该第二设备发送该多个数据帧;该第一设备接收该第二设备发送的多个丢失数据帧的标识信息;该多个丢失数据帧包括多个第一丢失数据帧;该多个第一丢失数据帧属于该第一文件;该第一设备从该nvm中一次读取该第一文件至该ram ,并生成该多个第一丢失数据帧;该第一设备从该ram中删除该第一文件;该第一设备向该第二设备发送该多个第一丢失数据帧。
27.实施第二方面提供的方法,第一设备可以实现:避免在待重传的多个丢失数据帧属于同一文件的情况下,第一设备生成每个丢失数据帧时重复执行读取同一文件的i/o操作,即重复执行将第一文件从nvm中读取至ram,然后删除ram中的第一文件。进而提升了数据重传效率,提高用户体验感。
28.结合第二方面提供的方法,该第一设备从该nvm中一次读取该第一文件至该ram,并生成该多个第一丢失数据帧,具体包括:该第一设备基于该多个丢失数据帧的标识信息,确定该多个丢失数据帧中第一个丢失数据帧为该第一文件中的数据帧时,该第一设备从该nvm一次读取该第一文件至该ram,基于该ram中的该第一文件和该第一个丢失数据帧的标识信息生成该第一个丢失数据帧;当确定该多个丢失数据帧中第二个丢失数据帧为该第一文件中的数据帧时,该第一设备基于该ram中的该第一文件和该第二个丢失数据帧的标识信息生成该第二个丢失数据帧。
29.结合第二方面提供的方法,该第一设备从该ram中删除该第一文件,具体包括:当该待分享文件还包括第二文件时,该第一设备基于该多个丢失数据帧的标识信息,当确定该多个丢失数据帧中第三个丢失数据帧为该第二文件中的数据帧时,该第一设备从该ram中删除该第一文件;或者,当该第二个丢失数据帧为该多个丢失数据帧中最后一个丢失数据帧时,该第一设备从该ram中删除该第一文件。
30.这样,第一设备在生成待重传的丢失数据帧的过程中,可以判断下一个待重传的
丢失数据帧和当前丢失数据帧是否属于同一个文件,若是,则先不从ram中删除第一文件。若不是,则待生成该下一个待重传数据帧之后,再从ram中删除第一文件,即释放资源。或者若当前丢失数据帧为多个丢失数据帧中最后一个丢失数据帧,则再从ram中删除第一文件,即释放资源。可以进一步避免,第一设备即重复执行将第一文件从nvm中读取至ram,然后删除ram中的第一文件,进而提升了数据重传效率,提高用户体验感。
31.结合第二方面提供的方法,当确定该多个丢失数据帧中第三个丢失数据帧为该第二文件中的数据帧时,该第一设备从该ram中删除该第一文件之后,该方法还包括:该电子设备从该nvm一次读取该第二文件至该ram,基于该ram中的该第二文件和该第三个丢失数据帧的标识信息生成该第三个丢失数据帧;该第一设备向该第二设备发送该第三个丢失数据帧。
32.这样,当第一设备判断下一个待重传的丢失数据帧和当前丢失数据帧不属于同一个文件,则打开第二文件,生成第二文件包含的丢失数据帧。
33.结合第二方面提供的方法,该第一设备从该nvm中一次读取该第一文件至该ram,并生成该多个第一丢失数据帧,具体包括:该第一设备基于该多个丢失数据帧的标识信息,确定出该多个丢失数据帧包括该第一文件中的该多个第一丢失数据帧;该第一设备从该nvm一次读取该第一文件至ram,基于该ram中的该第一文件和该多个第一丢失数据帧的标识信息生成该多个第一丢失数据帧。
34.这样,第一设备可以从多个丢失数据帧的标识信息时,可以一次获取到属于同一文件的丢失数据帧的标识信息,然后打开该同一文件,生成属于同一文件的丢失数据帧。无需读一个丢失数据帧的标识信息,生成该丢失数据帧,再读下一个,再生成下一个丢失数据帧。进而增加本方案的多种实施方式。
35.结合第二方面提供的方法,该多个数据帧的标识信息包括该多个数据帧分别对应的帧号和文件id;或者,该多个数据帧的标识信息包括该多个数据帧分别对应的帧号。
36.这样,第二设备向第一设备发送的指示待重传的丢失数据帧的标识信息可以由多种类型。
37.结合第二方面提供的方法,当该多个数据帧的标识信息包括该多个数据帧分别对应的帧号和文件id时,该多个数据帧的帧格式包括数据部分、帧号和文件id;当该多个数据帧的标识信息包括该多个数据帧分别对应的帧号时,该多个数据帧的帧格式包括数据部分和帧号。
38.这样,第一设备可以采用多种方式生成数据帧。
39.结合第二方面提供的方法,当该多个数据帧的帧格式包括数据部分和帧号时,该第一设备向该第二设备发送该多个数据帧具体包括:该第一设备向该第二设备发送该多个数据帧中该第一文件的多个第一文件数据帧;在发送完该多个第一文件数据帧之后,向该第二设备发送定界符;该定界符用于指示该第一文件发送完毕。
40.这样第一设备可以向第二设备发送用于指示第一文件发送完毕的指示信息,使得第二设备接收并生成第一文件。
41.结合第二方面提供的方法,在该第一设备向该第二设备发送该多个数据帧的过程中,该方法还包括:该第一设备输出第一信息,该第一信息用于指示该多个数据帧的发送进度。
42.这样,第一设备可以输出文件分享进度的提示信息,提高用户体验。
43.结合第二方面提供的方法,该第一设备向该第二设备发送该多个数据帧之前,该方法还包括:该第一设备接收到将该待分享文件分享至该第二设备的第一操作;响应于该第一操作,该第一设备与该第二设备建立该连接;该连接包括:wifi p2p连接,bt连接、uwb连接。
44.这样,第一设备可以根据用户操作,与第二设备建立连接并向第二设备发送待分享文件。
45.结合第二方面提供的方法,该第一设备接收到该第一操作之前,该方法包括:第一设备通过无线通信模块搜索到该第二设备;该无线通信模块包括但不限于wlan模块、bt模块和uwb模块。该第一设备显示该第二设备对应的选项;该第一操作为作用于该第二设备对应的选项上的操作。
46.这样,第一设备分享文件的对象可以由用户主动选择。
47.第三方面,本技术提供一种电子设备,该电子设备包括:一个或多个处理器、存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器用于调用该计算机指令以使得该电子设备执行上述第二方面中任一项描述的方法。
48.第四方面,本技术提供一种包含指令的计算机程序产品,当该计算机程序产品在电子设备上运行时,使得该电子设备执行如上述第二方面中任一项描述的方法。
49.第五方面,本技术提供一种计算机可读存储介质,该计算机可读存储介质包括指令,当该指令在电子设备上运行时,使得该电子设备执行如上述第二方面中任一项描述的方法。
附图说明
50.图1为本技术实施例提供的一种分享文件的方法流程示意图;图2为本技术实施例提供的一种通信系统示意图;图3a为本技术实施例提供的电子设备100的硬件架构示意图;图3b为本技术实施例提供的电子设备100的软件架构示意图;图4为本技术实施例提供的数据重传方法流程示意图;图5a-图5d为本技术实施例提供的一组界面示意图;图6a-图6b为本技术实施例提供的一组数据帧结构示意图;图6c-图6d为本技术实施例提供的一组ack帧结构示意图;图7a-图7b为本技术实施例提供的另一组界面示意图。
具体实施方式
51.下面将结合附图对本技术实施例中的技术方案进行清楚、详尽地描述。其中,在本技术实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
52.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性
或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本技术实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
53.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本技术所描述的实施例可以与其它实施例相结合。
54.本技术以下实施例中的术语“用户界面(user interface,ui)”,是应用程序或操作系统与用户之间进行交互和信息交换的介质接口,它实现信息的内部形式与用户可以接受形式之间的转换。用户界面是通过java、可扩展标记语言(extensible markup language,xml)等特定计算机语言编写的源代码,界面源代码在电子设备上经过解析,渲染,最终呈现为用户可以识别。用户界面常用的表现形式是图形用户界面(graphic user interface,gui),是指采用图形方式显示的与计算机操作相关的用户界面。它可以是在电子设备的显示屏中显示的文本、图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、widget等可视的界面元素。
55.随着音频、视频、图片等文件内容的清晰度的日益提升,其所占的空间也越来越大。用户在分享大文件时,数据传输需要的时间变长,传统的tcp/ip协议,由于过于复杂的协议层次模型,发送方需要对数据进行层层封装,接收方需要对数据进行层层解封装,导致数据传输时延大。
56.为此,本技术提供一种极简传输协议,又称极简协议,该协议将tcp/ip协议栈中的四层协议栈(表示层、会话层、传输层、网络层)精简为一层,该层可直接将文件内容封装为数据帧后进行传输,从实现数据的报文简化、包头简化、交互简化,突破tcp/ip协议层层封装的掣肘,极大提升的传输效率。
57.参考图1,图1示例性示出第一设备采用极简传输协议分享文件的方法流程。
58.s101,第一设备向第二设备发送文件包含的数据帧,携带数据帧帧号、数据帧所属文件的id。
59.具体的,当第一设备检测到用户选择文件并分享至第二设备的操作后,第一设备可以调用极简协议模块,根据用户选择的一个或多个文件生成对应的多个数据帧,并为每个文件对应的数据帧按序标记帧号,之后,第一设备将每个文件对应的数据帧以及帧号,和该数据帧所属文件的身份标识(identity,id),发送至第二设备。其中,数据帧的帧号和/或文件的id可以被封装在该数据帧中。
60.s102,第二设备接收数据帧,并确定丢失数据帧的帧号和所属文件的id。
61.具体的,第二设备可以调用极简协议模块,接收第一设备发送的数据帧,解封数据帧,并确定丢失的数据帧,然后根据丢失的数据帧确定丢失数据帧的帧号和所属文件的id。其中,极简协议模块根据接收数据帧帧号是否连续来确定是否有丢失的数据帧,当电子设备检测到最新接收到的新数据帧帧号与已接收到的最后一个数据帧号不连续时说明有丢失数据帧,其中确实的帧号即确定丢失数据帧的帧号。
62.s103,第二设备向第一设备发送用于指示丢失数据帧的帧号和所属文件的id的重传信息。
63.具体的,第二设备会定时例如每200ms向第一设备发送重传信息,该重传信息具体可以指示一个重传列表,该重传列表可能为空,也可能包含一个或多个数据帧的帧号,该多个数据帧的帧号所属文件的id可能相同也可能不同。
64.例如,重传信息指示了,用于重传的数据帧的帧号包括第一丢失数据帧帧号,和第二丢失数据帧帧号,该两个丢失数据帧帧号所属文件的id都为第一文件的id。
65.s104,第一设备根据重传信息打开第一文件,读取第一文件,生成属于第一文件的第一丢失数据帧,关闭第一文件。
66.具体的,第一设备中的极简协议模块读取到重传信息中包含的第一丢失数据帧帧号和所属第一文件的id后,根据该第一文件的id获知该第一文件的存储路径,之后开启针对第一文件的i/o操作。该i/o操作具体是,极简协议模块先调用open()函数,打开该第一文件的存储路径,之后读取第一文件,根据第一丢失数据帧帧号对应位于第一文件的部分,生成该部分所对应的第一丢失数据帧。最后调用close()函数,关闭该第一文件以避免资源占用。
67.其中,打开该第一文件的存储路径,之后读取第一文件,相当于将存储在nvm中的第一文件读取至ram中。关闭该第一文件相当于将存储在ram中的第一文件删除。
68.s105,第一设备根据重传信息打开第一文件,读取第一文件,生成属于第一文件的第二丢失数据帧,关闭第一文件。
69.与步骤s104类似,第一设备中的极简协议模块读取到重传信息中包含的第二丢失数据帧帧号和所属第一文件的id后,根据该第一文件的id获知该第一文件的存储路径,之后开启针对第一文件的i/o操作。该i/o操作具体是,极简协议模块先调用open()函数,打开该第一文件的存储路径,之后读取第一文件的所有,根据第二丢失数据帧帧号对应位于第一文件的部分,然后生成该部分所对应的第二丢失数据帧,并将其加入至发送队列中。最后调用close()函数,关闭该第一文件避免资源占用。
70.s106,第一设备向第二设备发送丢失数据帧。
71.s107,第二设备接收丢失数据帧。
72.s108,第二设备输出文件接收进度,当文件对应的所有数据帧传输完毕并被成功接收后,输出分享成功提示信息。
73.s109,第一设备输出文件分享进度,当文件对应的所有数据帧传输完毕并被成功接收后,输出分享成功提示信息。
74.可以理解的是,第一设备执行步骤s109的操作的顺序可以是在伴随步骤s101即第一设备向第二设备发送文件对应的数据帧的同时,持续显示对应的分享进度。第二设备执行步骤s108的操作的顺序可以是在伴随步骤s102即第二设备接收第一设备发送文件对应的数据帧的同时,持续显示对应的接收进度。
75.从图1所示的第一设备采用极简传输协议分享文件的方法流程,可以看出,由于第一设备执行i/o操作所需时间较多,而当第一设备接收到的指示待重传的多个丢失数据帧的所属文件为同一个文件后,在执行生成该多个丢失数据帧的过程中,第一设备的极简协议模块会多次执行打开同一文件,读取该同一文件以及关闭同一文件的i/o操作。这样,会使得重传数据的效率降低,进一步导致文件分享过程出现卡顿现象。
76.为了解决采用上述极简协议分享文件时所存在的数据重传效率低下的问题,本申
请提供了数据重传方法,可以实现:在第一设备向第二设备传输文件的过程中,当第一设备接收到第二设备发送的重传信息之后,第一设备可以根据重传信息确定待重传的丢失数据帧所属的文件,当待重传的丢失数据帧所属的文件包括第一文件时,则第一设备可以一次读取第一文件并生成第一文件包含的一个或多个丢失数据帧。当待重传的丢失数据帧所属的文件还包括第二文件时,则第一设备可以一次读取第二文件并生成第二文件包含的一个或多个丢失数据帧。这样,可以避免在待重传的多个丢失数据帧属于同一文件的情况下,第一设备生成每个丢失数据帧时重复执行读取同一文件的i/o操作,进而提升了数据重传效率,提高用户体验感。
77.接下来,先介绍本技术提供的数据重传方法所应用的通信系统。
78.参考图2,图2示例性示出本技术提供的数据重传方法所应用的通信系统10。
79.如图2所示,该通信系统10包括第一设备和第二设备。其中,第一设备和第二设备可以是:手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,pda)、增强现实(augmented reality,ar)设备、虚拟现实(virtual reality,vr)设备、人工智能(artificial intelligence, ai)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备,本技术实施例对该第一设备和第二设备的具体类型不作特殊限制。
80.在本技术提供的通信系统中,第一设备和第二设备可以基于极简协议分享文件。具体的,第一设备和第二设备分别都包括:第一应用、nearby模块、协议模块、i/o模块。
81.其中,第一应用,位于电子设备应用程序层,可以为用户提供文件分享业务,该应用例如可以是荣耀分享、手机克隆等等。其中,荣耀分享是荣耀设备所提供的系统级功能,可以为荣耀设备之间提供无线快速分享文件的服务,使用荣耀分享分享文件的过程中,收发设备无需借助数据线、无需使用流量,可以通过例如wifi p2p连接建立无线通信连接快速完成文件分享。wifi p2p是无线保真(wireless fidelity,wi-fi)联盟(alliance)推出的wifi端对端(peer-to-peer,p2p)标准。
82.其中,nearby模块,位于电子设备中的应用程序层框架层,是近距离通信服务模块,nearby模块提供一个或多应用编程接口(application programming interface,api),供上层应用例如荣耀分享调用该nearby模块提供的接口,进而调用协议模块中的极简协议所提供的传输能力。
83.其中,协议模块,位于电子设备中的系统层,协议模块中包括一个或多个协议,其中一个协议即极简协议。该协议将tcp/ip协议栈中的四层协议栈(表示层、会话层、传输层、网络层)精简为一层,该层可直接将从i/o模块中读取的文件封装为数据帧后进行传输,从实现数据的报文简化、包头简化、交互简化,突破tcp/ip协议层层封装的掣肘,极大提升的传输效率。
84.此外,这里的极简协议区别于图1所示的方法中所采用的极简协议。具体的,该极简协议规定,第一设备根据第二设备发送的重传信息生成待重传的丢失数据帧的过程中,无需如图1所述的步骤s104和s105即重复执行打开以及关闭每一个帧号对应的文件的i/o操作,第一设备仅需执行后文图4所述的步骤s413即执行一次打开某一文件的操作,读取到该文件后,可以根据该文件对应的多个帧号分别生成对应的丢失数据帧,最后再关闭该文
件。
85.在本技术实施例中,极简协议主要支撑的业务包括但不限于上文所述的荣耀分享,还可以包括手机克隆等。可以理解的是,极简协议还可以支撑除荣耀以外的其他厂商开发的设备中所提供的快速分享文件的功能,该功能可以是系统级功能也可以是第三方功能,本技术实施例对此不作限制。
86.上述电子设备的厂商可以包括该电子设备的制造商、供应商、提供商或运营商等。制造商可以是指以自制或采购的零件及原料来加工制造电子设备的生产厂商。供应商可以是指提供该电子设备的整机、原料或零件的厂商。运营商可以是指负责该电子设备的经销的厂商。
87.可以理解的是,极简协议这一名称仅为示例,关于极简协议的详细内容将在下文介绍使用极简协议分享文件的方法流程中给出详细描述,在此暂不赘述。
88.其中,i/o模块,位于电子设备中的内核层即i/o驱动,i/o模块在接收到协议模块中的极简协议的调用后,驱动第一设备的硬件中的存储器输出待分享文件,或者驱动第二设备硬件中的存储器输入接收到的文件。
89.可以理解是,上述第一设备和第二设备分别包含的第一应用、nearby模块、协议模块、i/o模块的名称仅为示例,在另一些实施例中,上述模块被称为其他名字,例如第一应用还可以称为第一功能,第一服务等等。关于这些模块的功能已在上文一一记载,本技术实施例对这些模块的名称不作限制。
90.基于上文介绍的本技术提供的数据重传方法所应用的通信系统,接下来介绍上述通信系统所包含的电子设备的软硬件架构。
91.参考图3a,图3a示出了电子设备100的结构示意图。
92.在本技术实施例中,第一设备和第二设备还可以统称为电子设备100。电子设备100可以是搭载ios、android、microsoft或者其它操作系统的终端设备,本技术实施例对电子设备搭载的操作系统不作限制。
93.如图3a所示,电子设备100可以包括:处理器110,天线1,天线2,移动通信模块150,无线通信模块160,摄像头193,显示屏194,外部存储器接口120,内部存储器121以及传感器模块180。其中传感器模块180可以包括压力传感器180a,触摸传感器180k等。
94.可以理解的是,本技术实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
95.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
96.其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
97.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
98.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
99.在本技术实施例中,处理器110检测到用于分享文件的操作,处理器110会调用第一应用程序(例如荣耀分享)执行文件分享的操作。具体的,该第一应用可以通过nearby模块提供的接口,调用协议模块中的极简协议所提供的传输能力,读取电子设备100中存储的文件,根据极简协议规定,生成该文件的数据帧后,第一设备可以将该文件的数据帧发送给接收设备。
100.在本技术另一些实施例中,在分享文件的过程中,处理器110还会调用显示屏194输出文件分享进度,以及文件分享结果的提示信息等。
101.电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
102.天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
103.移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
104.无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wifi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号解调以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
105.在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通
信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc ,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(global positioning system ,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
106.在本技术实施例中,电子设备100可以通过上述无线通信模块160中的wlan模块、bt模块或者uwb模块等发现附近的设备,并通过该无线通信模块与其他设备建立无线通信连接,使得电子设备100基于该无线通信连接与其他设备传输文件。该无线通信连接包括但不限于:wifi p2p连接,bt连接、uwb连接。
107.电子设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
108.显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd)。显示屏面板还可以采用有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等制造。在一些实施例中,电子设备100可以包括1个或n个显示屏194,n为大于1的正整数。
109.在本技术实施例中,显示屏194可用于显示电子设备100发现的可用于接收文件的设备对应的选项,以及显示文件分享进度,和文件分享结果等。
110.电子设备100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。
111.isp 用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头193中。
112.摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,电子设备100可以包括1个或n个摄像头193,n为大于1的正整数。
113.在本技术实施例中,电子设备100可以使用摄像头拍摄照片或者视频,并将该照片
或者视频存储在存储器中,进而为用户提供可以向第二设备分享的文件。
114.数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
115.视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
116.在本技术实施例中,在电子设备100向其他设备分享数字视频文件前,视频编解码器可以对该文件进行压缩等。在电子设备100接收到其他设备分享的数字视频文件后,可以对该文件进行解压缩等。内部存储器121可以包括一个或多个随机存取存储器(random access memory,ram)和一个或多个非易失性存储器(non-volatile memory,nvm)。
117.随机存取存储器可以包括静态随机存储器(static random-access memory,sram)、动态随机存储器(dynamic random access memory, dram)、同步动态随机存储器(synchronous dynamic random access memory, sdram)、双倍资料率同步动态随机存取存储器(double data rate synchronous dynamic random access memory, ddr sdram,例如第五代ddr sdram一般称为ddr5 sdram)等;非易失性存储器可以包括磁盘存储器件、快闪存储器(flash memory)。快闪存储器按照运作原理划分可以包括nor flash、nand flash、3d nand flash等,按照存储单元电位阶数划分可以包括单阶存储单元(single-level cell,slc)、多阶存储单元(multi-level cell,mlc)、三阶储存单元(triple-level cell, tlc)、四阶储存单元(quad-level cell, qlc)等,按照存储规范划分可以包括通用闪存存储(英文:universal flash storage,ufs)、嵌入式多媒体存储卡(embedded multi media card,emmc)等。
118.随机存取存储器可以由处理器110直接进行读写,可以用于存储操作系统或其他正在运行中的程序的可执行程序(例如机器指令),还可以用于存储用户及应用程序的数据等。
119.非易失性存储器也可以存储可执行程序和存储用户及应用程序的数据等,可以提前加载到随机存取存储器中,用于处理器110直接进行读写。
120.外部存储器接口120可以用于连接外部的非易失性存储器,实现扩展电子设备100的存储能力。外部的非易失性存储器通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部的非易失性存储器中。
121.在本技术实施例中,上述非易失性存储器用于存储待分享的文件,例如图片、视频、音频等文件。
122.上述随机存取存储器用于存储例如荣耀分享正在运行中的程序的可执行程序,以及临时存储从非易失性存储器读取到的待分享文件。以供电子设备100进行分享给其他电子设备100。
123.压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180a可以设置于显示屏194。压力传感器180a的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180a,电极之间的电容改变。电子设备
100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180a检测所述触摸操作强度。电子设备100也可以根据压力传感器180a的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
124.在本技术实施例中,压力传感器180a用于采集用户输入的用于触发分享文件的操作的相关数据,例如拖拽电子设备100中显示屏194所显示的文件,至其他设备的标识处释放该文件的操作的相关数据,并将该数据传送至处理器110,由处理器110根据该操作调用荣耀分享应用程序执行文件分享的操作。
125.触摸传感器180k,也称“触控面板”。触摸传感器180k可以设置于显示屏194,由触摸传感器180k与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180k用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180k也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
126.在本技术实施例中,触摸传感器180k用于采集用户输入的用于触发分享文件的操作的相关数据,例如作用于电子设备100中显示屏194所显示的文件的选项和其他设备的标识的操作的相关数据,并将该数据传送至处理器110,由处理器110根据该操作调用荣耀分享应用程序执行文件分享的操作。
127.电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本技术实施例以分层架构的android系统为例,示例性说明电子设备100的软件结构。
128.图3b是本技术实施例的电子设备100的软件结构框图。
129.分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(android runtime)和系统库,以及内核层。
130.应用程序层可以包括一系列应用程序包。
131.如图3b所示,应用程序包可以包括第一应用,图库,通话,日历,导航,wlan,蓝牙,音乐,视频,短信息等应用程序。其中,第一应用可以是上文所述的荣耀分享、手机克隆等,关于第一应用的作用已在上文详细记载,这里不再赘述。
132.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。
133.如图3b所示,应用程序框架层可以包括nearby模块,窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。其中,关于nearby模块的详细介绍可以参考前文,这里不再赘述。
134.窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
135.内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
136.视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
137.电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
138.资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
139.通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
140.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
141.核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
142.应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
143.系统库可以包括多个功能模块。例如:协议模块、表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。其中,关于协议模块的详细介绍可以参考前文,这里不再赘述。
144.表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
145.媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如: mpeg4,h.264,mp3,aac,amr,jpg,png等。
146.三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
147.2d图形引擎是2d绘图的绘图引擎。
148.内核层是硬件和软件之间的层。内核层至少包含i/o模块即存储器驱动,显示驱动,摄像头驱动,音频驱动,传感器驱动。其中,关于i/o模块的详细介绍可以参考前文,这里不再赘述。
149.基于上文对本技术提供的数据重传方法所应用的通信系统、以及通信系统中所包含的电子设备的软硬件架构的介绍,接下来结合图4,来详细介绍本技术提供的数据重传方法流程。
150.如图4所示,该数据重传方法包括以下步骤:阶段1(s401-s405):第一设备接收到触发分享文件的第一操作,将获取到的文件以及文件的id发送至第二设备。
151.s401,第一应用接收到触发分享文件的触发分享文件的操作。
152.在一种可能的实施方式中,该触发分享文件的操作包括:选择一个或多个文件的
操作,以及选择分享对象的操作。可选的,该触发分享文件的操作还可以包含作用于“分享”控件的操作。
153.本技术实施例上述触发分享文件的操作所包含的子操作的执行顺序不作限制,例如该触发分享文件的操作的具体执行顺序可以是,先选择一个或多个文件的操作,然后是作用于“分享”控件的操作,最后是选择分享对象的操作。又例如,该触发分享文件的操作的具体执行顺序可以是,先选择分享对象,然后选择一个或多个文件的操作。
154.在本技术实施例中,上述一个或多个文件存储在第一设备中。这些文件包括图片、视频、音频以及文档等。这些文件可以由第一设备中安装的其他应用(例如第二应用)提供,该第二应用例如可以是图库等。上述分享对象是指,第一设备在运行第一应用时搜索到的其他设备,该其他设备例如是第二设备。此外,上述“分享”控件也可以是第二应用提供的,当用户点击分享后,该第二应用可以调用第一应用,提供分享对象。
155.接下来,通过ui实施例来介绍上述触发分享文件的操作的一种实现方式,例如第一设备选中一张图片分享至第二设备的实例。
156.本技术提供的ui实施例,以第一应用为荣耀分享,第二应用为图库来介绍。
157.参考图5a-图5d,图5a-图5d示例性示出触发分享文件的触发分享文件的操作的用户界面示意图。
158.图5a示例性示出,选择待分享文件的操作示意图。
159.如图5a所示,用户界面500为图库提供的包含有多个图片,例如图片1、图片2和图片3等等的用户界面。
160.当第一设备检测到作用于图5a所示的其中任意一个图片1处的长按操作,响应于该操作,第一设备选中图片1,并显示如图5b所示的用户界面。
161.图5b-图5c示例性示出,触发第一设备开启荣耀分享的操作的一种用户界面示意图。
162.如图5b所示,用户界面510中显示有提示信息511,和每个图片分别对应的选项,例如图片1对应的选项512、图片2对应的选项513和图片3等其他更多的图片分别的对应的选项;控件514、控件515、控件516和控件517。
163.其中,提示信息511用于显示当前用户已选择的图片数量;图片1对应的选项512处于已经被选中;图片2对应的选项513以及其他更多的图片对应的选项都处于未被选中的状态;控件514用于将已选择的图片分享至其他用户;控件515用于选中全部图片;控件516用于将已选择的图片删除;控件517用于对已选择的图片执行其他更多的操作。此外,当用户只选择了图片1这一项,则该提示信息511显示已选择1项;用户可以通过点击图5b所示图片对应的选项以继续选择图片,则提示信息511同步更新当前用户已选中的图片的项数。
164.当第一设备检测到作用于图5b所示的控件514处的操作时,响应于该操作,第一设备显示如图5c所示的用户界面。
165.图5c示例性示出,第一设备显示分享方式的用户界面示意图。
166.如图5c所示,用户界面520中显示有窗口521。该窗口521中显示有一种或多种图片分享方式所对应的选项,例如选项521a、选项521b、选项521c、选项521d和选项521e等。其中选项521a为荣耀分享。
167.当第一设备检测到作用于图5c所示的选项521a处的操作时,响应于该操作,第一
设备开启荣耀分享,开始搜索附近的其他设备,并显示如图5d所示的搜索结果。
168.图5d示例性示出,选择分享对象的操作示意图。
169.如图5d所示,用户界面530中显示有窗口531。该窗口531中显示有一个或多个第一设备发现的其他设备对应的选项,例如选项531a、选项531b、选项531c和选项531d等。
170.当第一设备检测到作用于图5d所示的选项531b处的操作时,响应于该操作,第一设备准备向选项531b对应的第二设备分享已选择的图片1。
171.可以理解的是,图5a-图5d仅仅示例性示出触发分享文件的触发分享文件的操作的一组用户界面示意图,不应构成对本技术实施例的限制。例如,图5c所示的开启荣耀分享的操作,还可以是通过下滑通知栏,点击通知栏中显示的第一应用对应的图标的操作。又例如,第一设备可以默认开启荣耀分享,当第一设备检测到作用图5b所示的用于分享的控件514的操作后,第一设备可以直接显示图5c所示的,荣耀分享提供的分享对象的用户界面。
172.在另一种可能的实施方式中,上述第一操的具体实现方法如下:当第一设备显示有第一应用提供的第一窗口和第二应用提供的第二窗口时,用户可以在第二窗口中选择第一设备中存储的文件,并将其拖拽至,第一窗口中显示的分享对象例如第二设备的标识处释放的触发分享文件的操作。
173.在本技术实施例中,上述第一应用提供的分享对象,具体通过以下步骤实现:第一应用通过调用无线通信模块中的蓝牙、wlan、nfc等模块,采用对应的通信技术,发现附近可用于分享文件的其他设备。例如,第一设备通过蓝牙、wlan等通信技术广播请求帧,附近的其他设备包括第二设备接收到该请求帧后,返回响应帧,如此,第一设备的第一应用可以显示已经发现的一个或多个设备对应的选项,该选项即上文所述的分享对象。又例如,第一设备例如手机的nfc功能被开启,手机背部的nfc区域触碰第二设备例如pc的特定标签后,手机发送请求帧,pc接收手机发送的请求帧,向手机返回响应帧,如此,完成手机和pc的互相发现。在本技术一些实施例中,请求帧和响应帧可携带指示信息,用于说明要建立无线连接,以完成文件分享等。
174.s402,第一设备中的第一应用调用nearby模块中的接口向协议模块发送分享文件的请求,该请求携带文件标识。
175.当第一应用检测到上述第一操作后,该第一应用可以根据用户选择的待分享文件获取到对应的文件标识,该文件标识(id)又称fileid,并向nearby模块发送分享文件的请求,该请求携带有用户已选择的待分享文件的fileid,以调用nearby模块中提供的接口,向协议模块发送该分享文件的请求。
176.可以理解的是,第一应用发送的分享文件的请求中,可以包含一个或多个fileid,具体由用户选择的待分享文件的数量决定。
177.s403,协议模块从i/o模块中读取待分享文件。
178.当协议模块接收到上述分享文件的请求后,协议模块可以采用极简协议从i/o模块中读取待分享文件。该读取文件即i/o操作中的读操作,具体包括以下步骤:首先,极简协议根据fileid在存储器中的存储路径打开对应文件。具体的,极简协议可以调用open()函数,通过i/o模块打开该文件。之后,极简协议读取该文件。最后,极简协议调用close()函数,通过i/o模块关闭该文件。
179.值得注意的是,在i/o操作中,无论是读数据还是写数据,读写流使用完都要用
close方法关闭该文件,防止占用资源。
180.s404,协议模块生成待分享文件对应的多个数据帧并将其加入发送队列。
181.具体的,协议模块可以采用极简协议生成待分享文件对应的多个数据帧。该多个数据帧的帧结构中具体可以包括:帧号、数据,或者还可以包括文件的id,也就是说,文件的id可以被封装在该数据帧中,也可以没有封装在该数据帧中。其中,帧号的生成机制具体可以是:方式一:参考图6a所示的数据帧结构示意图,以文件为单位,每个文件对应的多个数据帧从0开始编号。例如,一个待分享文件(例如第一文件)的文件大小为4兆字节(mega bytes,mb),当极简协议规定每个数据帧最大为1024字节(bytes),则该第一文件包含4096个数据帧,数据帧号包括0-4095。例如另一个待分享文件(例如第二文件)的大小为5mb,当极简协议规定每个数据帧最大长度为1024bytes,则该文件包含5120个数据帧,数据帧号从0-5119。
182.当采用方式一所示的数据帧结构,对于发收双方(第一设备和第二设备)来说,结合文件的id和帧号,便可以确定数据帧对应的文件,以及在该文件中的具体部分。
183.可以理解的是,上述数据帧最大字节是指数据帧中,除了帧头(若有)、帧尾(若有)等等以外的,携带文件数据的有效数据段的最大字节。
184.方式二:参考图6b所示的数据帧结构示意图,以一次选中的所有分享文件为单位,所有待分享文件对应的多个数据都是从0开始编号。例如,一次选中的第一个待分享文件(例如第一文件)的数据大小为4mb,当极简协议规定每个数据帧最大长度为1024bytes,则该第一文件包含4096个数据帧,数据帧号包括0-4095。一次选中的第二个待分享文件(第二文件)的大小为5mb,当极简协议规定每个数据帧最大长度为1024bytes,则该文件包含5120个数据帧,数据帧号包括4096-9215。
185.当采用方式二所示的数据帧结构,对于发送方即第一设备来说,仅根据帧号,便可以确定数据帧对应的文件以及在文件中的具体部分。对于接收方即第二设备来说,需根据帧号和文件的id,才可以确定数据帧对应的文件以及在文件中的具体部分。
186.s405,第一设备的协议模块向第二设备的协议模块发送多个数据帧,携带多个数据帧的标识信息。
187.具体的,第一设备的协议模块可以基于与第二设备之间的无线连接,向第二设备的协议模块发送数据帧,并携带有各个数据帧分别对应的标识信息。该标识信息可以包括帧号和所属文件id,或者该标识信息可以包括帧号。
188.当步骤s404中,采用方式1的数据帧结构生成数据帧时,上述携带的各个数据帧分别对应的文件id具体为,采用方式1的数据帧结构生成数据帧时携带的文件id。
189.当步骤s404中,采用方式2的数据帧结构生成数据帧时,第一设备的协议模块可以在发送第一文件对应的数据帧之前先发送一个起始符,指示接下来开始发送第一文件,当第一设备在发完第一文件对应的所有数据帧后,可以发送一个定界符,用于指示已经发完第一文件。其中,起始符和定界符之间所有数据帧都属于第一文件。可以理解是,在另一些实施例中,可以只发定界符,不发起始符。
190.上述无线连接具体是指,在上文所述的步骤s401中第一应用检测到选择分享对象例如第二设备的操作后,第一设备可以与该第二设备建立的无线连接,用于基于该无线连
接分享文件。该无线连接包括但不限于wifi p2p连接,bt连接、uwb连接。其中,wifi p2p是无线保真(wireless fidelity,wi-fi)联盟(alliance)推出的wifi端对端(peer-to-peer,p2p)标准。
191.阶段2(s406-s410):第二设备接收文件并确定其中丢失的数据帧,向第一设备发送重传ack。
192.s406,第二设备的协议模块解封接收到的数据帧,确定多个丢失数据帧的标识信息。
193.具体的,第二设备的协议模块采用与第一设备的协议模块对等的协议即极简协议,解封已接收到的数据帧,从而可以获知每个数据帧中的数据和标识信息。该标识信息包括帧号和所属文件id。其中文件id可以根据数据帧中携带的文件id获取,或者结合上文所述的起始符和定界符,确定每个数据帧所属文件的id。
194.此外,极简协议模块还可以根据接收数据帧帧号是否连续来确定是否有丢失的数据帧,以及丢失数据帧的信息。当协议模块检测到接收到的当前接收到的新数据帧帧号与已接收到最后一个数据帧号不连续时,则说明有丢失数据帧,该丢失数据帧即两个非连续帧号之间缺失的帧号所对应的数据帧。
195.上述丢失数据帧的标识信息包括:帧号,或者还可以包括文件的id。具体的,当数据帧的帧号生成机制采用上述步骤s404所述的方式1时,该丢失数据帧的信息包括帧号和文件的id;当数据帧的生成机制采用上述步骤s404所述的方式2时,该丢失数据帧的信息仅包括帧号。
196.在本技术另一些实施例中,丢失数据帧还可以被称为重传数据帧。
197.s407,第二设备协议模块通过nearby模块中的接口向第一应用发送已解封数据帧对应的文件内容。
198.具体的,第二设备协议模块解封接收到的数据帧并获取到数据后,向nearby模块发送接收到的文件内容,以调用nearby模块中提供的接口,向协议模块发送该已接收到的文件内容。
199.s408,第二设备的协议模块向第一设备的协议模块发送重传ack,包含多个丢失数据帧的标识信息。
200.具体的,第二设备的协议模块在接收固定数量的数据帧,固定数量的文件包含的数据帧,用户一次选中的所有文件包含的数据帧,或者接收固定时长(例如200ms)会向第一设备发送重传ack,用于向第一设备通知第二设备当前数据接收情况。当该重传ack没有丢失数据帧的信息,则说明此前接收的多个数据帧中没由数据帧丢失;当该重传ack包含丢失数据帧的信息,则说明此前接收的数据帧有丢失且需要第一设备重传丢失的数据。
201.在一种可能实现的方式中,该重传ack可以被称为重传信息,用于指示一个重传列表或者ack bitmap。
202.在上述重传ack中包含的多个丢失数据帧分别对应的帧号和文件的id时,该多个文件的id可能相同或者不同。当文件的id相同时,其对应的数据帧属于同一个文件;否则,属于不同文件。
203.参考图6c,图6c示例性示出一种重传ack的帧结构示意图。
204.如图6c所示,该重传ack的帧结构包括:文件的id和帧号。可选的,该重传ack还可
以包含:ack帧结构类型(未示出)、第二设备接收速率(未示出)等信息。
205.参考图6d,图6d示例性示出另一种重传ack结构示意图。
206.如图6d所示,该重传ack的帧结构包括:帧号。可选的,该重传ack还可以包含:ack帧类型(未示出)、第二设备接收速率(未示出)等信息。
207.可以理解的是,上述第二设备向第一设备反馈重传ack的时间仅为示例,具体由极简协议规定。此外,极简协议还会规定重传ack的大小例如不能超过预设值,若超过预设值,则重传ack中包含的重传信息越多,传输过程中容易导致丢。并且第一设备和第二设备传输文件所采用的协议都为极简协议。这样,第一设备才会预留对应的窗口,正确接收到该重传ack。
208.s409,在第一设备的协议模块确定重传ack中包含多个丢失数据帧的标识信息时,则执行阶段3。
209.第一设备的协议模块获取重传ack,通过判断是否包含有多个丢失数据帧的标识信息时,来获知当前第二设备的接收情况,即是否正常接收以及丢失的数据帧有哪些等接收情况。
210.例如,当重传ack的实现形式是重传列表时,协议模块可以通过判断该重传列表是否为空,来确定是否有接收端是否有丢失数据帧。当该重传列表为空,则说明此前传输的数据帧都已经被第二设备正常接收;当该重传列表不为空,则说明此前传输的数据帧有丢失数据帧的情况,则第一设备的协议模块将遍历该重传列表,生成重传数据帧,并重传至第二设备的协议模块,具体参见下文阶段3所述的步骤。
211.阶段3(s410-s416):第一设备生成多个丢失数据帧,并发送至第二设备。
212.s410,协议模块根据多个丢失数据帧的标识信息中指示的第一文件的id,通过i/o模块打开第一文件的id对应的第一文件。
213.具体的,协议模块中的极简协议可以根据多个丢失数据帧的标识信息中包含的第一文件的id获知第一文件在存储器中的存储路径,进而可以调用open()函数,通过i/o模块打开该第一文件。其中,第一文件的id为多个丢失数据帧中的第一个丢失数据帧对应的文件的id。
214.上述,打开该第一文件的存储路径,之后读取第一文件,相当于将存储在nvm中的第一文件读取至ram中。
215.上述协议模块获取文件的id的过程如下:当协议模块采用上述步骤s404中的方式1生成数据帧,则多个丢失数据帧的标识信息中包含多个帧号和每个帧号分别对应的文件的id,该协议模块可以根据多个丢失数据帧的标识信息中记载的文件的id信息直接得到第一文件的id;当协议模块采用上述步骤s404中的方式2生成数据帧,则多个丢失数据帧的标识信息中可能仅包含多个帧号,但协议模块仍然可以根据帧号获取到该帧号对应的文件的id。
216.s411,i/o模块向协议模块发送第一文件。
217.s412,协议模块确定丢失数据帧的标识信息中包含第一文件对应的多个第一丢失数据帧的标识信息,生成多个第一丢失数据帧。
218.协议模块确定多个丢失数据帧的标识信息中第一文件的id对应的多个帧号,生成该多个帧号分别对应的丢失数据帧,具体包括以下方式:
方式1:在协议模块执行上述步骤s411-s412,即协议模块根据多个丢失数据帧的标识信息获取多个丢失数据帧中的第一个丢失数据帧对应的第一帧号,获取该第一帧号在第一文件中对应部分,进而生成第一帧号对应的第一丢失数据帧。同时,当协议模块确定多个丢失数据帧的标识信息中的下一个丢失数据帧对应的文件的id也为第一文件的id时,则根据下一个丢失数据帧对应的第二帧号,获取第二帧号在第一文件中对应另一部分,生成该第二帧号对应的第二丢失数据帧。最后,直到确定多个丢失数据帧的标识信息中的下一个文件的id和上一个文件的id不同或者多个丢失数据帧的标识信息中没有其他丢失数据帧的标识信息,则协议模块执行下述步骤s414。
219.方式2:在协议模块执行上述步骤s411-s412,即协议模块获取多个丢失数据帧的标识信息中的第一个文件的id即第一文件的id,通过i/o模块打开该第一文件,读取第一文件。然后,获取多个丢失数据帧的标识信息中,第一文件的id对应的所有帧号例如包括第一帧号和第二帧号,根据各个帧号获取其分别在第一文件中对应部分,生成多个丢失数据帧例如包括第一丢失数据帧和第二丢失数据帧。最后协议模块执行下述步骤s414即通过i/o模块关闭该第一文件。
220.s413,协议模块通过i/o模块关闭第一文件。
221.具体的,在协议模块生成多个丢失数据帧的标识信息中包含的第一帧号和第二帧号分别对应的丢失数据帧后,协议模块可以调用close()函数,通过i/o模块关闭该文件。
222.上述关闭该第一文件相当于将存储在ram中的第一文件删除。
223.s414,协议模块确定丢失数据帧的标识信息中是否包含指示第二文件的id,若是则生成第二文件对应的第二丢失数据帧。具体如下:首先,协议模块根据多个丢失数据帧的标识信息中指示的第二文件的id,通过i/o模块打开第二文件的id对应的第二文件。关于获取第二文件的id具体方法可以参考上文步骤s413,在此暂不赘述。
224.之后,i/o模块向协议模块发送第一文件。
225.然后,协议模块确定多个丢失数据帧的标识信息中第二文件的id对应的多个帧号,生成该多个帧号分别对应的丢失数据帧。关于生成丢失数据帧的具体方法可以参考上文步骤s413,在此暂不赘述。
226.最后,协议模块通过i/o模块关闭第二文件。
227.s415,第一设备的协议模块向第二设备的协议模块发送多个丢失数据帧。
228.在本技术实施例中,第一设备执行上述步骤s416的执行顺序不限定,上述步骤s416还可以在协议模块生成上述多个丢失数据帧并将其加入发动队列后,持续执行。
229.阶段4(s416-s422):成功分享文件,输出分享结果。
230.s416,第二设备的协议模块解封接收到的多个丢失数据帧。
231.具体的,第二设备的协议模块采用与第一设备的协议模块对等的极简协议,解封已接收到的丢失数据帧,从而可以获知每个丢失数据帧中包含的数据、帧号以及所属文件的id。或者解封已接收到的丢失数据帧,仅可以获知每个数据帧的数据、帧号,再结合上文所述的起始符和定界符,确定每个丢失数据帧所属文件的id。
232.s417,第二设备的协议模块通过nearby模块向第一应用发送多个丢失数据帧对应内容。
233.具体的,第二设备的协议模块解封接收到的丢失数据帧并获取到数据后,向nearby模块发送接收到的文件内容,以调用nearby模块中提供的接口,向协议模块发送该已接收到的文件内容。
234.s418,第二设备的协议模块向第一设备的协议模块发送ack帧,包含指示文件接收完毕的信息。
235.具体的,在第二设备接收到第一设备发送的上文所述的定界符,且第二设备接收到的文件的数据帧没有丢失数据帧的情况下,第二设备的协议模块可以向第一设备的协议模块发送ack帧,包含用于指示文件接收完毕的信息。
236.可选的,第一设备还会执行以下步骤:s419,第一设备的协议模块通过nearby模块向第一应用发送指示成功分享文件的信息。
237.s420,第一设备的第一应用输出成功分享文件的提示信息。
238.可选的,第二设备还会执行以下步骤:s421,第二设备的协议模块通过nearby模块向第一应用发送指示成功分享文件的信息。
239.s422,第二设备的第一应用输出成功接收文件的提示信息。
240.在本技术提供的另一些实施例中,本技术提供的提高数据重传效率方法还可以包括以下步骤:在第一设备接收到上文步骤s401所述的触发分享文件的第一操作之后,第一设备可以根据已经发送至第二设备的数据帧占分享文件的总数据帧的比例,或者,还可以根据接收到第二设备反馈,第二设备已接收到的数据帧占分享文件的总数据帧的比例,来输出文件分享进度,并实时刷新文件分享进度。直至该文件分享进度占满时,第一设备会执行上述可选步骤s421所述的输出文件分享成功的提示信息。
241.第二设备在接收到上文步骤s405所述的第一设备发送文件之后,第二设备可以根据已接收到的数据帧占分享文件的总数据帧的比例,来输出文件接收进度,并实时刷新文件接收进度。直至该文件接收进度占满时,第二设备会执行上述可选步骤s422所述的输出文件接收成功的提示信息。
242.参考图7a,图7a示例性示出第一设备输出文件分享进度的用户界面示意图。
243.如图7a所示,用户界面710中的选项531b外围显示有进度条531e,该选项531b对应于分享对象即第二设备,该进度条531e会实时刷新,当进度条占满时,则说明已成功分享文件。关于图7a中其他内容的描述具可参考上文对图5d的描述,在此暂不赘述。
244.参考图7b,图7b示例性示出第二设备输出文件接收进度的用户界面示意图。
245.如图7b所示,用户界面720中的窗口721显示有进度条721a,该进度条721a会实时刷新,当进度条占满时,则说明已成功接收文件。
246.可见,采用本技术提供的提高数据重传效率方法之后,可以避免传输信道的网络环境较差,或者接收端的数据处理能力较弱的时候,文件分享卡顿,进度条停滞不前的问题。具体体现在以下场景:当传输分享文件的过程中,若当前传输信道的网络环境较差,或者第二设备端的数据处理能力较弱的时候同一个文件存在多个数据帧丢失需要重传情况下。从上文阶段3
(步骤s411-s416)可以知道,当一个文件对应的多个数据帧出现丢失后,该第一设备需要生成该多个丢失数据帧。第一设备接收到第二设备的重传信息中包含的多个帧号对应同一个文件,第一设备采用极简协议生成该多个帧号分别对应的多个丢失数据帧的过程中,无需重复执行打开以及关闭每一个帧号对应的文件的i/o操作,第一设备仅需执行一次根据帧号对应的文件的id打开该文件的操作,读取到文件后,可以根据多个帧号分别生成对应的丢失数据帧,最后再关闭该文件。可见,这样第一设备在生成待重传的丢失数据帧的过程中,可以减少i/o操作,提高了数据重传效率,进而加快文件分享进度,避免文件分享卡顿,进度条停滞不前的问题,提高用户的文件分享体验。
247.本技术的各实施方式可以任意进行组合,以实现不同的技术效果。
248.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如, dvd)、或者半导体介质(例如固态硬盘 solid state disk)等。
249.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:nvm或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。
250.总之,以上所述仅为本发明技术方案的实施例而已,并非用于限定本发明的保护范围。凡根据本发明的揭露,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献