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

建立数据传输通道的方法、终端系统以及存储介质与流程

2022-02-24 16:40:18 来源:中国专利 TAG:


1.本技术涉及通信技术领域,尤其涉及一种建立数据传输通道的方法、终端系统以及计算机可读存储介质。


背景技术:

2.随着各类智能终端设备的普及,催生了越来越多的跨设备分布式应用。分布式应用包括位于不同终端上的应用程序,不同终端上的应用程序之间通过设备间的通信通道交换业务数据,进而共同协作以完成一项任务。
3.为实现设备间通信,现有技术中,分布式应用的应用程序除包括用于实现自身业务的业务模块之外,还包括用于实现设备间通信的通信模块。这样,程序的结构会比较繁琐,程序的开发过程也会花费较多的人力成本。


技术实现要素:

4.本技术的一些实施方式提供了一种建立数据传输通道的方法、终端系统和计算机可读存储介质,以下从多个方面介绍本技术,以下多个方面的实施方式和有益效果可互相参考。
5.第一方面,本技术实施方式提供了一种建立数据传输通道的方法,用于建立第一终端的第一应用程序和第二终端中的第二应用程序之间的数据传输通道;方法包括:第一应用程序向第一终端中的第一通信接口程序发送设备连接请求,设备连接请求用于指示第一通信接口程序建立用于连接第一终端和第二终端的设备间通信通道;第一通信接口程序基于设备间通信协议与第二终端中的第二通信接口程序建立通信连接,以建立设备间通信通道;至少基于设备间通信通道建立成功,第一应用程序与第一通信接口程序基于进程间通信机制建立第一进程间通信通道,第二通信接口程序与第二应用程序基于进程间通信机制建立第二进程间通信通道,以使得第一进程间通信通道、设备间通信通道以及第二进程间通信通道共同形成第一应用程序和第二应用程序之间的数据传输通道。
6.根据本技术的实施方式,终端上的应用程序无需直接实现跨设备通信,而是将跨设备通信的任务交给终端上的通信接口程序执行,这样,应用程序中可简化设置或不设置通信模块,从而降低程序开发的人力成本。另外,本技术实施方式还可以降低应用程序与终端支持的通信方式之间的关联性,从而提高应用程序的可移植性。
7.在一些实施方式中,至少基于设备间通信通道建立成功,第一应用程序与第一通信接口程序基于进程间通信机制建立第一进程间通信通道,第二通信接口程序与第二应用程序基于进程间通信机制建立第二进程间通信通道,包括;至少基于设备间通信通道建立成功,第一应用程序与第一通信接口程序建立第一进程间通信通道;第一通信接口程序将第一进程间通信通道已建立的消息传递至第二通信接口程序;响应于接收到第一进程间通信通道已建立的消息,第二通信接口程序与第二应用程序建立第二进程间通信通道。
8.根据本技术的实施方式,第一进程间通信通道为主动创建的进程间通信通道,在
第一进程间通信通道创建成功后,触发创建第二进程间通信通道。
9.在一些实施方式中,第一通信接口程序将第一进程间通信通道已建立的消息传递至第二通信接口程序,进一步包括:第一通信接口程序向第二通信接口程序传递的第一进程间通信通道已建立的消息中包括第一通道编号;第一通道编号是第一通信接口程序为第一进程间通信通道分配的用于唯一标识第一进程间通信通道的通道编号。
10.在一些实施方式中,第二通信接口程序根据第一通道编号以及预定的编号设置规则为第二进程间通信通道分配第二通道编号,第二通道编号是用于唯一标识第二进程间通信通道的通道编号。
11.在一些实施方式中,设定的编号设置规则使得第一通道编号和第二通道编号具有不同的奇偶性,且使得第一通道编号与第二通道编号之间具有设定的差值。
12.根据本技术实施方式,当终端中既存在主动创建的虚拟通道,又存在被动创建的虚拟通道时,可能避免通道编号冲突的问题。
13.在一些实施方式中,设定的差值为1。
14.在一些实施方式中,方法还包括:第一终端通过第一通信接口程序向第二终端的第二通信接口程序发送设备授信请求,以使得第二通行接口程序对第一终端进行授信认证;并且,基于确定第二通信接口程序通过第一终端的授信认证,第一应用程序与第一通信接口程序建立第一进程间通信通道,第二通信接口程序与第二应用程序建立第二进程间通信通道。
15.根据本技术实施方式,可以提高业务数据传输的安全性。
16.在一些实施方式中,第一终端向第二终端发送的设备授信请求中包括第一终端的用户账号信息;第二终端对第一终端进行授信认证,包括:第二通信接口程序判断第一终端的用户账号信息与第二终端的用户账号信息是否相同;若第一终端的用户账号信息与第二终端的用户账号信息相同,第二通信接口程序通过对第一终端的授信认证;若第一终端的用户账号信息与第二终端的用户账号信息不相同,第二通信接口程序获取来自于第一终端的授信认证信息,以根据授信认证信息确定是否通过对第一终端的授信认证。
17.在一些实施方式中,方法还包括:第一通信接口程序通过设备间通信通道向第二通信接口程序发送第一秘钥,第一秘钥用于对第二应用程序发送至第一应用程序的数据进行加密;和/或,第二通信接口程序通过设备间通信通道向第一通信接口程序发送第二秘钥,第二秘钥用于对第一应用程序发送至第二应用程序的数据进行加密。
18.根据本技术实施方式,可以提高业务数据传输的安全性。
19.在一些实施方式中,第一秘钥或第二秘钥为非对称密钥对中的公钥。
20.在一些实施方式中,第一应用程序向第一通信接口程序发送的设备连接请求中包含第二终端的通信地址信息;方法还包括:第一应用程序向第一通信接口程序发送设备发现请求;响应于接收到设备发现请求,第一通信接口程序开启第一终端的设备扫描功能,以获取第一终端的至少一个候选连接终端的设备信息,候选连接终端的设备信息至少包括候选连接终端的通信地址信息,至少一个候选连接终端包括第二终端;第一通信接口程序向第一应用程序发送至少一个候选连接终端的设备信息;第一应用根据至少一个候选连接终端的设备信息确定第二终端的设备信息,并根据第二终端的设备信息确定设备连接请求的内容;根据内容,第一应用程序向第一终端中的第一通信接口程序发送设备连接请求。
21.在一些实施方式中,候选连接终端设备的设备信息还包括候选连接终端的设备标识信息,候选连接终端支持的通信连接方式,候选连接终端的操作系统的版本,和/或候选连接终端支持的应用程序的列表。
22.在一些实施方式中,方法还包括:第一通信接口程序为各候选连接终端分配用于唯一标识各候选连接终端的设备编号。
23.在一些实施方式中,第二通信接口程序中存储有应用程序注册列表,应用程序注册列表中包括第二应用程序的应用标识;第二通信接口程序与第二应用程序基于进程间通信机制建立第二进程间通信通道,包括:第二通信接口程序接收第一通信接口程序发送的第一应用程序的应用标识,并根据第一应用程序的应用标识和应用程序注册列表确定第二应用程序为用于与第一应用程序进行业务交互的应用程序;基于确定第二应用程序为用于与第一应用程序进行业务交互的应用程序,第二通信接口程序与第二应用程序建立第二进程间通信通道。
24.在一些实施方式中,方法还用于建立第一终端的第三应用程序和第二终端的第四应用程序之间的数据传输通道,方法进一步包括:第三应用程序向第一通信接口程序发送设备连接请求,以根据第一通信接口程序的回复消息确定设备间通信通道已建立;至少基于确定设备间通信通道以建立,第三应用程序与第一通信接口程序基于进程间通信机制建立第三进程间通信通道,并触发第二通信接口程序与第四应用程序基于进程间通信机制建立第四进程间通信通道,以使得第三进程间通信通道、设备间通信通道以及第四进程间通信通道共同形成第三应用程序和第四应用程序之间的数据传输通道。
25.根据本技术实施方式,终端上的多个通信应用程序均可通过通信接口程序与对端设备进行通信,可避免各应用程序重复开发通信模块,避免开发工作量的重复和浪费。
26.在一些实施方式中,第一通信接口程序根据第一应用程序的优先度等级和第三应用程序的优先度等级确定用于第一应用程序的业务数据和用于第三应用程序的业务数据在设备间通信通道中的传输次序。
27.根据本技术实施方式,通信接口程序可方便地对各应用程序的传输优先级进行管理,优先保障对实时性要求高的业务数据的传输,提高用户体验。
28.在一些实施方式中,第一应用程序的优先度等级由第一应用程序确定或由第一通信接口程序确定;或者,第三应用程序的优先度等级由第三应用程序确定或由第一通信接口程序确定。
29.在一些实施方式中,进程间通信机制为管道通信机制。
30.在一些实施方式中,设备间通信协议为下述任意一种:局域网通信协议;蓝牙通信协议;wi-fi p2p通信协议。
31.第二方面,本技术实施方式提供了一种终端系统,包括第一终端和第二终端,第一终端用于执行本技术第一方面任一实施方式提供的方法中由第一终端执行的步骤,第二终端用于执行本技术第一方面任一实施方式提供的方法中由第二终端执行的步骤。第二方面能达到的有益效果可参考第一方面任一实施方式所提供的方法的有益效果,此处不再赘述。
32.第三方面,本技术实施方式提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,该指令在计算机上执行时,可使计算机执行本技术第一方面任一实施方
式提供的方法。第三方面能达到的有益效果可参考第一方面任一实施方式所提供的方法的有益效果,此处不再赘述。
附图说明
33.图1为本技术实施方式的应用场景示意图;
34.图2为现有技术的应用程序模块结构图;
35.图3为本技术实施例提供的数据传输通道的结构示意图一;
36.图4为本技术实施例提供的另一个应用场景;
37.图5为本技术实施例提供的终端设备的构造示意图;
38.图6为本技术实施例提供的终端设备的软件架构图;
39.图7为本技术实施例提供的数据传输通道建立方法的流程图一;
40.图8a为本技术实施例提供的数据传输通道建立方法的流程图二;
41.图8b为本技术实施例提供的设备选择界面示意图一;
42.图9a为本技术实施例提供的数据传输通道建立方法的流程图三;
43.图9b为本技术实施例提供的设备选择界面示意图二;
44.图10a为本技术实施例提供的数据传输通道建立方法的流程图四;
45.图10b为本技术实施例提供的pin码输入界面示意图;
46.图11a为本技术实施例提供的数据传输通道建立方法的流程图五;
47.图11b为本技术实施例提供的虚拟通道编号方法示意图;
48.图12为本技术实施例提供的数据传输通道建立方法的流程图六;
49.图13为本技术实施例提供的数据传输通道的结构示意图二;
50.图14示出了本技术实施方式提供的终端设备的框图;
51.图15示出了本技术实施方式提供的片上系统(soc,system on chip)的结构示意图。
具体实施方式
52.以下将参考附图详细说明本技术的具体实施方式。
53.本技术实施方式用于提供一种建立数据传输通道的方法,图1示出了本技术实施方式的一个应用场景。参考图1,用户甲和用户乙分别通过控制终端a和终端b以进行联机游戏“坦克大战”,为使得用户甲和用户乙可以共享相同的游戏进度,终端a上的“坦克大战”界面和终端b上的“坦克大战”界面可以呈现同步的游戏状态。例如,当用户甲对终端a进行操作(例如,按下前进键)以控制游戏道具动作(例如,控制坦克前进时)时,终端b上的“坦克大战”界面可以同步游戏道具的该动作,这样,终端a的用户和终端b的用户可以通过不同的终端对同一个游戏进行控制,从而实现联机游戏的目的。
54.图1中以联机游戏应用“坦克大战”为例给出了跨设备分布式应用的一个示例。在终端技术领域中,将分布在不同终端上的,相互之间通过数据交换以共同协作完成一项任务的应用称为“分布式应用”。
55.通过分布式应用,不同的终端之间可以实现计算能力和外设资源的互助共享,从而为人们的日常生活带来便利。例如,通过屏幕协同应用,可以实现两个不同的终端之间
(例如,手机和车机之间,平板和笔记本电脑之间等)的协同输入和镜像反控;通过智能家居交互应用,可以构建智能化的生活场景,例如用户可以将手机作为智慧屏的输入外设(即将手机作为智慧屏的键盘使用);通过分布式文件存储应用,可以实现海量文件的跨设备存储等。
56.跨设备分布式应用依赖于相互之间的数据交互以实现彼此的协同,而数据的交互则通过终端之间的通信连接实现。现有技术中,为实现分布式应用之间的相互协作,各分布式应用的程序模块中,除包括用于实现自身业务的业务模块之外,还包括用于实现设备间通信的通信模块。
57.以图1所示的游戏应用“坦克大战”为例,现有技术中,“坦克大战”的业务模块实现的功能包括:设置游戏关卡,创建和销毁游戏中的道具(例如,坦克,子弹等),控制道具的动作(例如,当用户按下前进按钮时,控制坦克向前移动),统计玩家得分情况等。通信模块的功能则包括:在游戏启动时通过设备扫描以发现对端设备(图1中,终端a的对端设备为终端b),并在发现对端设备后与对端设备上的“坦克大战”应用建立数据连接;在游戏进行时将游戏的状态信息(例如,坦克的位置,坦克发射子弹的频率以及子弹的类型,玩家的得分等)发送至对端设备,以使得对端设备上的“坦克大战”应用可以实时更新游戏界面。
58.也就是说,现有技术中,分布式应用的应用程序除用于实现自身业务外,还涉及到众多设备间通信的细节,这样,程序的结构会比较繁琐,程序的开发过程也会花费较多的人力成本。另外,为利用本地通信功能进行设备间通信,分布式应用的通信模块被配置为与本终端的通信方式相匹配(例如,当本终端支持wifi p2p通信时,分布式应用的通信模块被配置为用于实现wifi p2p通信),而各终端所支持的通信方式可能并不相同,这使得分布式应用程序的兼容性和可移植性较差。
59.另外,在一些场景中,终端设备上可能具有多个分布式应用。图2示出了现有技术中该场景中下分布式应用之间的通信方式。参考图2,终端a上具有分布式应用a1,a2,a3,终端b上具有分别与分布式应用a1,a2,a3相配对的分布式应用b1,b2,b3。各应用程序均包括业务模块和通信模块,应用程序通过自身的通信模块与对端设备的应用程序进行数据交换(例如,应用a1通过自身的通信模块与应用b1进行数据交换),这样,各分布式应用需要单独开发各自的通信模块,这会造成开发工作量的重复和浪费。
60.为此,本技术实施方式提供了一种建立数据传输通道的方法,用于解决上述技术问题。本技术实施方式中,终端设备中设置了用于实现跨设备通信的通信接口程序,当终端上的分布式应用需要与对端设备上的配对应用进行业务交互时,通过终端上的该通信接口程序来实现跨设备通信,而非通过自身的通信模块实现跨设备通信。
61.以图1所示的游戏应用“坦克大战”为例来介绍本技术实施方式提供的方法,但可以理解,本技术实施方式还可以应用于其他分布式应用程序。另外,为便于表述,下文将终端a中“坦克大战”应用称作“坦克大战a”,将终端a中“坦克大战”应用称作“坦克大战b”)。
62.当“坦克大战a”需要与“坦克大战b”建立业务连接时,坦克大战a首先向终端a中的通信接口程序a(本文称“接口a”或“第一通信接口程序”)发送设备连接请求。接口a在接收到坦克大战a发送的设备连接请求后,与终端b中的通信接口程序b(本文称“接口b”或“第二通信接口程序”)基于设备间传输协议建立设备间通信通道(又称“物理通道”)。在物理通道建立成功之后,接口a和应用a基于进程间通信机制建立跨进程的通信通道(本文称之为“虚
拟通道a”或“第一进程间通信通道”),接口b和应用b基于进程间通信机制建立另一条跨进程的通信通道(本文称之为“虚拟通道b”或“第二进程间通信通道”)。这样,如图3所示,数据从左至右,从终端a的“坦克大战a”,依次经由虚拟通道a、物理通道和虚拟通道b,被传递到“坦克大战b”。虚拟通道a、物理通道和虚拟通道b可共同形成用于连接坦克大战a和坦克大战b的数据传输通道p,以实现坦克大战a和坦克大战b之间的数据交互。
63.本技术实施方式中,终端上的分布式应用无需直接实现跨设备通信,而是将跨设备通信的任务交给终端上的通信接口程序执行,这样,分布式应用程序中可简化设置或不设置通信模块,从而降低程序开发的人力成本。另外,本技术实施方式还可以降低分布式应用程序与终端支持的通信方式之间的关联性,从而提高分布式应用程序的可移植性。
64.虽然上面介绍的是两个终端设备各有一个分布式应用的情况,本技术实施方式也可以应用于终端设备上具有多个分布式应用的场景。参考图4,本技术实施方式中,终端a上具有分布式应用a1,a2,a3,终端b上具有分别与分布式应用a1,a2,a3相配对的分布式应用b1,b2,b3。各分布式应用均通过终端上的通信接口程序与对端设备上的配对应用进行通信。例如,终端a中的应用a1需要与终端b中的应用b1进行通信时,应用a1首先通过虚拟通道(即进程间通信通道)将业务数据传输至接口a,再由接口a通过物理通道(即设备间通信通道)将业务数据传输至接口b,最终由接口b通过虚拟通道将业务数据传输至应用b1。通过本技术实施方式,可避免各分布式应有重复开发通信模块,避免开发工作量的重复和浪费。
65.另外,通过图4示出的方式,本技术还可以节省终端中的通信资源(例如,端口号资源)。具体而言,由于本技术通过一条物理通道(操作系统仅需为该物理通道分配端口号)即可实现多个应用之间的跨设备通信,相对现有技术中(如图2所示)每个应用各自建立物理通道的情形(操作系统需要为每个物理通道分配端口号),可以节省系统中的端口号资源。
66.进一步地,由于终端中的多个应用均通过通信接口程序进行跨设备通信,因此通信接口程序可方便地对各应用的传输优先级进行管理,优先保障对实时性要求高的业务数据的传输,提高用户体验。
67.以上以分布式应用为例叙述了本技术实施方式的应用场合,但可以理解,本技术实施方式也可以应用于除分布式应用之外的其他通信应用,例如,电子邮件应用,浏览器应用、地图应用、天气应用等。
68.本技术对终端设备(终端a和终端b)的具体类型不进行限定,终端设备可以为便携式计算机、平板电脑、手机、可穿戴电子设备(例如手表、头戴设备等)、便携式媒体播放器、电子书阅读设备、工业控制设备、流媒体客户端设备等。
69.终端a和终端b可以是相同类型的设备(例如,终端a和终端b均为手机),也可以是不同类型的设备(例如,终端a为手机,终端b为平板)。另外,终端a和终端b可以是同一个用户的设备,也可以是不同用户的设备。
70.可以理解的是,终端a和终端b应为对等设备,即,终端a和终端b应至少支持一种共同的通信方式(例如,终端a和终端b均支持wifi p2p通信方式)。在此基础上,本技术对终端a和终端b的实际通信方式不进行限定,终端a和终端b之间可以通过单一的通信方式进行通信,例如,通过蓝牙、局域网(有线或无线方式)或蜂窝网进行通信;也可以通过多种通信方式进行通信,例如,终端a的应用a1与终端b的应用b1之间通过蓝牙通信,终端a的应用a2与终端b的应用b2之间通过局域网通信;还可以在业务连接的不同阶段采用不同的通信方式,
例如在设备发现阶段通过蓝牙通信,在业务数据传输阶段通过wifi p2p通信(该通信方式为huawei share
tm
采用的通信方式)。
71.图5示出了本技术实施例提供的终端设备100的结构示意图。其中,终端设备100可以实现为终端a,也可以实现为终端b。
72.终端设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接头130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
73.可以理解的是,本发明实施例示意的结构并不构成对终端设备100的具体限定。在本技术另一些实施例中,终端设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
74.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
75.处理器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
76.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
77.在一些实施例中,处理器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)接口。
78.i2c接口是一种双向同步串行总线,包括一根串行数据线(serial data line,sda)和一根串行时钟线(derail clock line,scl)。在一些实施例中,处理器110可以包含多组i2c总线。处理器110可以通过不同的i2c总线接口分别耦合触摸传感器180k,充电器,闪光灯,摄像头193等。例如:处理器110可以通过i2c接口耦合触摸传感器180k,使处理器110与触摸传感器180k通过i2c总线接口通信,实现终端设备100的触摸功能。
79.i2s接口可以用于音频通信。在一些实施例中,处理器110可以包含多组i2s总线。处理器110可以通过i2s总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过i2s接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
80.pcm接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过pcm总线接口耦合。在一些实施例中,音频模块170也可以通过pcm接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述i2s接口和所述pcm接口都可以用于音频通信。
81.uart接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,uart接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过uart接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过uart接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
82.mipi接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。mipi接口包括摄像头串行接口(camera serial interface,csi),显示屏串行接口(display serial interface,dsi)等。在一些实施例中,处理器110和摄像头193通过csi接口通信,实现终端设备100的拍摄功能。处理器110和显示屏194通过dsi接口通信,实现终端设备100的显示功能。
83.gpio接口可以通过软件配置。gpio接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,gpio接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。gpio接口还可以被配置为i2c接口,i2s接口,uart接口,mipi接口等。
84.可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端设备100的结构限定。在本技术另一些实施例中,终端设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
85.usb接头130是一种符合usb标准规范的连接器,可以用来连接终端设备100和外围设备,具体可以是标准usb接头(例如type c接头),mini usb接头,micro usb接头等。usb接头130可以用于连接充电器为终端设备100充电,也可以用于终端设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接头还可以用于连接其他电子设备,例如ar设备等。在一些实施方案中,处理器110可以支持通用串行总线(universal serial bus),通用串行总线的标准规范可以为usb1.x,usb2.0,usb3.x,usb4。
86.终端设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
87.天线1和天线2用于发射和接收电磁波信号。终端设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
88.移动通信模块150可以提供应用在终端设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电
磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
89.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
90.无线通信模块160可以提供应用在终端设备100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
91.在一些实施例中,终端设备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)。
92.终端设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
93.显示屏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的正整数。
94.终端设备100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。
95.isp用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头193中。
96.摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,终端设备100可以包括1个或n个摄像头193,n为大于1的正整数。
97.数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当终端设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
98.视频编解码器用于对数字视频压缩或解压缩。终端设备100可以支持一种或多种视频编解码器。这样,终端设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
99.npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现终端设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
100.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展终端设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
101.内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行终端设备100的各种功能应用以及数据处理。终端设备100可以实现为终端a或终端b。当终端设备100实现为终端a时,内部存储器121中存储的指令可以包括:由处理器中的至少一个执行时导致终端设备100实施本技术实施例提供的建立数据传输通道的方法中由终端a执行的步骤的指令;当终端设备100实现为终端b时,内部存储器121中存储的指令可以包括:由处理器中的至少一个执行时导致终端设备100实施本技术实施例提供的建立数据传输通道的方法中由终端b执行的步骤的指令。
102.终端设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构系统为例,示例性说明终端设备100的软件结构。
103.图6是本发明实施例的终端设备100的软件结构框图。
104.分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(android runtime)和系统库,以及内核层。
105.应用程序层可以包括一系列应用程序包。
106.如图6所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息,坦克大战等应用程序。
107.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。
108.如图6所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器,通信接口程序等。其中,通信接口程序用于为终端设备100中的一个或多个通信应用程序(例如,图库应用、坦克大战应用)提供跨设备通信的接口,以及用于建立与通信应用程序之间的虚拟通道等。当终端设备100实现为终端a时,通信接口程序实现为本技术实施例提供的接口a;当终端设备100实现为终端a时,通信接口程序实现为本技术实施例提供的接口b。
109.窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
110.内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
111.视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
112.电话管理器用于提供终端设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
113.通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
114.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
115.核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
116.应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
117.系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库
(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。
118.表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
119.媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。
120.三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
121.2d图形引擎是2d绘图的绘图引擎。
122.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
123.【实施例一】
124.以下以图1示出的场景(用户甲和用户乙通过终端a(作为第一终端)、终端b(作为第二终端)进行“坦克大战”联机游戏的场景)为例,介绍本技术的具体实施例。本实施例中,将“坦克大战a(作为第一应用程序)”作为发起连接的应用,将“坦克大战b(作为第二应用程序)”作为接受连接的应用。
125.参考图7,为建立如图3所示的数据传输通道p,本实施例提供的建立数据传输通道p的方法,包括以下阶段:
126.s110:设备发现阶段。终端a开启设备扫描功能,以发现终端b,并获取终端b的通信地址信息。
127.s120:物理通道建立阶段。基于获取到的终端b的通信地址信息,终端a与终端b建立物理通道(作为设备间通信通道)。
128.s130:设备授信阶段。为提高业务数据传输的安全性,终端b对终端a进行授信认证,并基于授信认证结果确定是否与终端a建立进一步的连接(即是否建立步骤s500中的虚拟通道)。
129.s140:秘钥交换阶段。终端a与终端b交换用于对业务数据进行加密的秘钥,以进一步提高业务数据传输的安全性。
130.s150:虚拟通道建立阶段。基于步骤s200中物理通道建立成功,并基于步骤s300中终端b通过对终端a的授信认证,坦克大战a与接口a(作为第一通信接口程序)建立虚拟通道a(作为第一进程间通信通道),坦克大战b与接口b(作为第二通信接口程序)建立虚拟通道b(作为第二进程间通信通道)。虚拟通道a、虚拟通道b连同接口a与接口b之间在步骤s120建立的物理通道,形成坦克大战a与坦克大战b之间的数据传输通道p。
131.在坦克大战a与坦克大战b之间通过上述步骤建立数据传输通道p之后,坦克大战a和坦克大战b可以通过数据传输通道p进行业务数据的传输。
132.以下分别对各阶段的具体步骤进行说明。
133.参考图8a,设备发现阶段s110包括以下步骤:
134.s111:坦克大战a向接口a发送设备发现请求。
135.坦克大战a响应于用户的设备发现指令,向接口a发送设备发现请求,例如,用户甲在开启终端a上的游戏应用“坦克大战a”,并点击游戏界面上的“搜索设备”按钮后,坦克大战a向接口a发送设备发现请求。本实施例中,坦克大战a通过调用接口a提供的应用程序接口(application programming interface,api)函数startdiscovery()向接口a发送设备
发现请求。
136.s112:响应于接收到坦克大战a发送的设备发现请求,接口a进行设备发现。
137.接口a响应于接收到坦克大战a的设备发现请求,开启终端a的设备扫描功能,以获取候选连接终端的设备信息。例如,接口a开启终端a的wifi扫描功能,以接收终端b对外发送的wifi广播消息。接口a在接收到终端b的wifi广播消息后,通过解析该广播消息,可获取到该广播消息中携带的终端b的设备信息。
138.本实施例中,接口a可以开启终端a的多种扫描功能,例如,同时开启终端a的蓝牙扫描功能和wifi扫描功能,以进行多种形式的设备发现。
139.接口a通过设备扫描获取到的候选连接终端的设备信息为候选连接终端对外暴露的设备信息,例如,候选连接终端通过广播的形式(例如,wifi广播,蓝牙广播,局域网广播等)对外暴露的设备信息。
140.候选连接终端的设备信息至少包括候选连接终端的通信地址信息,例如,候选连接终端的网络地址信息(例如,ip地址,端口号),候选连接终端的物理地址信息(例如,候选连接终端的mac地址),这样,接口a可以根据获取到的候选连接终端的通信地址信息与候选连接终端建立通信连接。
141.在一些实施例中,候选连接终端的设备信息包括候选连接终端的设备标识信息,例如,候选连接终端的设备名,候选连接终端的用户名等,以方便用户对候选连接终端进行识别。
142.在一些实施例中,候选连接终端设备的设备信息还包括候选连接终端支持的通信连接方式,候选连接终端支持的应用程序的列表等,以方便用户从候选连接终端中选择希望建立连接的候选连接终端。
143.在一些实施例中,候选连接终端的设备信息还包括候选连接终端的操作系统的版本,用户可以根据候选连接终端的操作系统的版本确定候选连接终端的通信接口程序(例如,终端b的接口b)的版本,以判断本终端的通信接口程序的版本是否可以兼容候选连接终端的通信接口程序的版本(通常为向前兼容)。
144.在一些实施例中,接口a为每个候选连接终端分配用于唯一标识各候选连接终端的设备编号(例如,接口a按照候选连接终端被发现的次序为候选连接终端分配编号),以便于在后续通信连接过程中对各候选连接终端进行标识。
145.s113:接口a向坦克大战a发送设备发现结果。
146.接口a将步骤s112中发现的候选连接终端的设备信息发送至坦克大战a,具体地,接口a通过坦克大战a注册在startdiscovery()中的回调函数向坦克大战a发送候选连接终端的设备信息。
147.坦克大战a在接收到接口a发送的候选连接终端的设备信息后,生成设备选择界面,用户可以通过设备选择界面选择希望建立连接的候选连接终端。
148.图8b为本实施例中坦克大战a生成的设备选择界面,设备选择界面上包括步骤s112发现的3个候选连接终端的设备标识信息(例如,候选连接终端的设备名“nova4”)和支持的通信连接方式(例如,wifi p2p,蓝牙)。
149.在其他实施例中,设备选择界面上还可以显示候选连接终端的其他设备信息,例如,操作系统的版本号,支持的应用程序列表等。
150.设备发现阶段s110用于发现可建立通信连接的候选连接终端,并获取到候选连接终端的设备信息。在获取到候选连接终端的设备信息后,本实施例提供的方法进入物理通道建立阶段s120。
151.在参考图9a,本实施例提供的物理通道建立阶段s120包括以下步骤:
152.s121:坦克大战a向接口a发送设备连接请求,设备连接请求用于指示接口a建立用于连接终端a和终端b的物理通道。
153.参考图9b,用户在设备选择界面上选择的希望建立连接的候选连接终端为nova4(对应于本实施例的终端b),希望建立连接的通信方式为wifi p2p方式。响应于用户的选择操作,坦克大战a向接口a发送设备连接请求,以指示接口a通过wifi p2p通信协议建立用于连接终端a和终端b的物理通道。本实施例中,坦克大战a通过调用接口a提供的应用程序接口(aplication programming interface,api)函数connect()向接口a发送设备发现请求。
154.坦克大战a向接口a发送的设备连接请求中包含终端b的通信地址信息和/或终端b的设备编号,以使得接口a根据接收到的设备连接请求与接口b建立通信连接。
155.s122:接口a基于设备间通信协议与接口b建立通信连接,以建立用于连接终端a和终端b的物理通道。
156.接口a在接收到坦克大战a发送的设备连接请求后,通过wifi p2p协议与接口b建立设备间通信连接,已完成物理通道的创建。
157.本实施例中,接口a与接口b基于wifi p2p通信协议建立通信连接,但本技术不限于此,在其他实施例中,接口a与接口b也可以基于其他设备间通信协议建立通信连接,例如,局域网通信协议,蓝牙通信协议等。
158.在建立终端a与终端b之间的物理通道后,为保证后续业务数据传输的安全性,终端b对终端a进行授信认证。
159.参考图10a,本实施例提供的设备授信阶段s130包括以下步骤:
160.s131:接口a通过物理通道向接口b发送设备授信请求,设备授信请求中包括终端a的用户账号信息;
161.s132:接口b判断接收到的终端a的用户账号信息是否与终端b的用户账号信息是否一致,如果一致,则通过对终端a的授信认证;如不一致,则执行步骤s133,以进一步获取终端a的授信认证信息,从而对终端a进行进一步认证。
162.也就是说,本实施例提供的授信方式,分为同账号授信方式和异账号授信方式。当终端a和终端b的用户账号信息一致时,接口b判断终端a的用户为与本机(即终端b)相同的用户,属于安全的设备,采用同账号授信方式对终端a进行授信,即直接通过对终端a的授信认证。
163.当当终端a和终端b的用户账号信息不一致时,接口b判断终端a为需要进一步认证的设备,从而采用异账号授信方式对终端a进行授信,即根据来自于终端a的授信认证信息确定是否通过对终端a的授信认证。
164.s133:接口b获取来自终端a的授信认证信息,以确定是否通过对终端a的授信认证。
165.本实施例中,接口b向接口a发送pin码获取请求,以触发接口a生成如图10b所示的
pin码输入界面。之后,接口a将用户输入的pin码(作为授信认证信息的一个示例)发送至接口b。接口b在接收到来自终端a的pin码后,根据该pin码确定是否通过对终端a的授信认证,例如,当接收到的pin码与终端b的pin码一致时,通过对终端a的授信认证,并将授信认证通过的消息发送至接口a;否则,不通过对终端a的授信认证。
166.在其他实施例中,接口a还可以通过其他方式对终端a进行授信认证。例如,“扫一扫”方式,具体为,终端a通过扫描终端b展示的二维码(接口b可用于生成该二维码)获取到该二维码中包括的配对信息(该配对信息可以是终端b的设备信息),之后,接口a将获取到的配对信息(作为授信认证信息的一个示例)发送至接口b。接口b在接收到来自接口a的配对信息后,确定是否通过对终端a的授信认证。
167.另外,本实施例中,至少在终端a通过接口b的授信认证后,接口a再向坦克大战a发送物理通道创建成功的通知。例如,接口a通过坦克大战a注册在connect()中的回调函数向坦克大战a发送物理通道创建成功的通知。但本技术不限于此,在一些实施例中,当物理通道创建成功后,接口a即向坦克大战a发送物理通道创建成功的通知。
168.接下来介绍本实施例提供的秘钥交换阶段s140的过程,具体为:
169.接口a生成一对非对称秘钥a,将非对称秘钥a中的私钥保存在本地,将非对称秘钥a中的公钥(作为第一秘钥)通过物理通道发送至接口b;在后续业务数据传输过程中,接口b通过非对称秘钥a中的公钥对发送至接口a的业务数据进行加密,接口a在接收到来自接口b的加密数据后通过本地保存的私钥进行解密。
170.接口b生成一对非对称秘钥b,将非对称秘钥b中的私钥保存在本地,将非对称秘钥b中的公钥(作为第二秘钥)通过物理通道发送至接口a;在后续业务数据传输过程中,接口a通过非对称秘钥a中的公钥对发送至接口b的业务数据进行加密,接口b在接收到来自接口a的加密数据后通过本地保存的私钥进行解密。
171.本实施例中,接口a和接口b交换的秘钥为非对称秘钥中的公钥,可以避免私钥在通信通道中传输,从而可提高秘钥的安全性。
172.但本技术不限于此。例如,在其他实施例中,接口a也可以生成对称秘钥a,并通过物理通道将对称秘钥a发送至接口b。
173.接下来介绍本实施例提供的虚拟通道建立阶段s150的过程。
174.在本实施例提供的虚拟通道建立阶段s150中,基于成功创建用于连接终端a和终端b的物理通道(物理通道建立阶段s120),并基于接口b通过对终端a的授信认证(设备授信阶段s130),坦克大战a和接口a之间基于进程间通信机制建立虚拟通道a,接口b和坦克大战b之间基于进程间通信机制建立虚拟通道b。
175.即本实施例中,成功创建用于连接终端a和终端b的物理通道,以及接口b通过对终端a的授信认证是下述步骤s151~s155开启的前提。但本技术不限于此,在其他实施例中,可以仅基于成功创建物理通道而开启步骤s151~s155。
176.本实施例中,进程间通信机制可以为内存共享机制、套接字机制、管道机制等,下文以管道机制为例进行介绍。
177.参考图11a,当成功创建物理通道,并且接口b通过对终端a的授信认证后,本实施例的虚拟通道建立阶段s150包括下述步骤:
178.s151:坦克大战a与接口a创建虚拟通道a。
179.当坦克大战a需要向坦克大战b发送业务数据时,坦克大战a基于管道机制创建管道pipea。在创建管道pipea后,坦克大战a可以获取到管道pipea的两个端点(分别为pipea[0]和pipea[1])的文件描述符(也可称作“句柄”)。本文将端点pipea[0]的文件描述符记为afd0,将端点pipea[1]的文件描述符记为afd1。根据管道机制,通过对管道端点的文件描述符进行写/读操作,可以向管道中写入数据/从管道中读取数据。
[0180]
坦克大战a在获取到管道pipea的两个端点的文件描述符之后,保存其中一个端点的文件描述符(例如,端点pipea[0]的文件描述符afd0),将另一个端点的文件描述符(例如,端点pipea[1]的文件描述符afd1)发送至接口a,以完成虚拟通道a的创建。
[0181]
本实施例中,管道pipea由坦克大战a进行创建,但本技术不限于此,在另一个实施例中,管道pipea也可以由接口a进行创建。
[0182]
s152:接口a为虚拟通道a分配通道编号,该通道编号用于唯一标识虚拟通道a。
[0183]
s153:接口a向接口b发送虚拟通道a已建立的消息,以触发终端b一侧建立虚拟通道b。具体地,接口a通过物理通道向接口b发送虚拟通道a已建立的消息,且在该消息中携带虚拟通道a的通道编号。
[0184]
s154:响应于接收到虚拟通道a已建立的消息,接口b与坦克大战b创建虚拟通道b。
[0185]
在接收到虚拟通道a已建立的消息后,接口b基于管道机制创建管道pipeb。在创建管道pipeb后,接口b可以获取到管道pipeb的两个端点(分别为pipeb[0]和pipeb[1])的文件描述符(也可称作“句柄”)。本文将端点pipeb[0]的文件描述符记为bfd0,将端点pipeb[1]的文件描述符记为bfd1。
[0186]
接口b在获取到管道pipeb的两个端点的文件描述符之后,保存其中一个端点的文件描述符(例如,端点pipeb[0]的文件描述符bfd0),将另一个端点的文件描述符(例如,端点pipeb[1]的文件描述符bfd1)发送至坦克大战b,以完成虚拟通道b的创建。
[0187]
本技术实施例中,通信接口程序(例如,接口a、接口b)中存储有应用程序注册列表,应用程序注册列表中包括已在通信接口程序中注册的应用程序的应用标识(例如,应用名称),通信接口程序可以根据应用程序注册列表确定本机中用于与对端设备的应用程序进行配对(即进行业务交互)的应用程序。
[0188]
例如,接口b中存储的应用程序注册列表中包括坦克大战b的应用标识(例如,坦克大战b的应用名称“坦克大战”),接口b可以从接口a获取坦克大战a的应用标识(例如,坦克大战a的应用名称“坦克大战”,该应用标识可以携带在接口a向接口b发送虚拟通道a已建立的消息中)。在接收到应用程序a的应用标识后,接口b根据应用程序a的应用标识和接口b中存储的应用程序注册列表,确定坦克大战b为与坦克大战a相配对的应用,从而将管道pipeb的端点pipeb[1]的文件描述符bfd1发送至坦克大战b,以与坦克大战b建立虚拟通道b。
[0189]
本实施例中,管道pipeb由接口b进行创建,但本技术不限于此,在另一个实施例中,管道pipeb也可以由坦克大战b进行创建。
[0190]
s155:接口b为虚拟通道b分配通道编号,该通道编号用于唯一标识虚拟通道b。
[0191]
具体地,接口b根据虚拟通道a的通道编号和预定的编号设置规则确定虚拟通道b的通道编号。为叙述的连贯性,编号设置规则在下文中进行具体说明。
[0192]
以上以终端a一侧首先建立虚拟通道a,然后触发终端b一侧建立虚拟通道b为例对虚拟通道的创建方法进行了说明,但本技术不限于此,在其他实施例中,也可以是终端b一
侧首先建立虚拟通道b,之后将虚拟通道b已建立的消息通知接口a,以触发终端a建立虚拟通道a。
[0193]
在虚拟通道a和虚拟通道b建立完毕之后,虚拟通道a、物理通道和虚拟通道b依次连接形成用于连接坦克大战a和坦克大战b的数据传输通道p,坦克大战a和坦克大战b可以基于数据传输通道p进行数据交互。以坦克大战a向坦克大战b发送数据d为例进行说明。
[0194]
终端a一侧:首先,坦克大战a将数据d写入管道pipea(通过对文件标识符afd0进行写操作),接口a从管道pipea的另一端读取数据d(通过对文件标识符afd1进行读取操作);之后,接口a通过非对称秘钥b中的公钥对数据d进行加密,并在数据d的头部加上虚拟通道a的通道编号之后,通过物理通道将数据d发送至接口b;
[0195]
终端b一侧:接口b在接收到数据d之后,解析出数据包中携带的虚拟通道a的通道编号,通过非对称秘钥b中的私钥对数据d进行加密;之后,接口b将解密后的数据d写入管道pipeb,坦克大战b从管道pipeb的另一端读取数据d,从而实现数据b从坦克大战a至坦克大战b的传输。
[0196]
需要说明的是,本实施例为本技术技术方案的示例性说明,本领域技术人员可以进行其他变形。例如,在另一个实施例中,在设备发现阶段中,坦克大战a可以通过自身的程序模块发现终端b,而非通过接口a发现终端b;又如,当不需要对业务数据进行加密时,可以省略秘钥交换阶段的步骤。
[0197]
另外,为实现并发传输,坦克大战a与坦克大战b之间可以建立多条数据传输通道p,每个数据传输通道p用于传输一个单独的文件。
[0198]
参考图11b,坦克大战a与坦克大战b之间包括6条数据传输通道p(分别记为通道p1~通道p6),各条数据传输通道p之间的物理通道是共用的,虚拟通道是独立的。举例来说,数据传输通道p1包括依次连接的虚拟通道a1,物理通道和虚拟通道b1;数据传输通道p2包括依次连接的虚拟通道a2,物理通道和虚拟通道b2;数据传输通道p3~p6以此类推,不再赘述。
[0199]
图11b中,各数据传输通道p上标记实心圆圈一端的发起业务连接的主动端,也就是说,数据传输通道p1、p3、p5中的虚拟通道坦克大战a发起创建的,数据传输通道p2、p4、p6中的虚拟通道坦克大战b发起创建的。
[0200]
当终端中既存在主动创建的虚拟通道,又存在被动创建的虚拟通道时,可能会出现通道编号冲突的问题,由此可能会引起数据传输的失误。例如,坦克大战a主动创建了虚拟通道a1,接口a将虚拟通道a1编号为a;之后,接口a又接收到了接口b发送的终端b建立虚拟通道b2的通知,且虚拟通道b2的编号也为a,此时,坦克大战a(或者接口a)被触发建立虚拟通道a2,如果接口a根据虚拟通道b2的编号a将虚拟通道a2的编号也设置为a,那么,虚拟通道a1和虚拟通道a2的编号将会产生冲突。这样,当接口a收到来自虚拟通道b2的数据时,将无法判断通过虚拟通道a1还是虚拟通道a2传输该数据。
[0201]
为此,本技术实施例提供了一种为虚拟通道进行编号的编号设置规则。根据本实施例的编号设置规则,主动端(发起虚拟通道创建的一端)虚拟通道的编号和从动端(被动触发创建虚拟通道的一端)虚拟通道的编号具有不同的奇偶性,且主动端虚拟通道的编号和从动端虚拟通道的编号具有设定的差值。例如,参考图11b(小括号内为各虚拟通道的通道编号),主动端虚拟通道的编号均为偶数(2n),从动端虚拟通道的编号为比主动端编号大
1的奇数(2n 1)。但本技术不限于此,在其他实施例中,差值可以为其他数值,例如, 5;或者,主动端虚拟通道的编号为奇数,从动端虚拟通道的编号为与主动端具有设定差值的偶数。
[0202]
通过本实施例提供的通道编号设置规则,可以有效的避免虚拟通道的编号冲突问题。例如,当接口b接收到通道编号为4的数据时,可以确定该数据来自接口a主动建立的虚拟通道,由于从动端虚拟通道的编号为比主动端编号大1,所以接口b应将该数据交给编号“5”的虚拟通道(即虚拟通道b3);又如,当接口b接收到通道编号为5的数据时,可以确定该数据来自接口a被动建立的虚拟通道,由于主动端虚拟通道的编号为比从动端编号小1,所以接口b应将该数据交给编号“4”的虚拟通道(即虚拟通道b4)。
[0203]
综上,通过本实施例提供的建立数据传输通道的方法,终端上的通信应用程序(例如,分布式应用“坦克大战”)无需直接实现跨设备通信,而是将跨设备通信的任务交给终端上的通信接口程序(例如,接口a,接口b)执行,这样,通信应用程序中可简化设置或不设置通信模块,从而降低程序开发的人力成本。另外,本技术实施方式还可以降低分布式应用程序与终端支持的通信方式之间的关联性,从而提高分布式应用程序的可移植性。
[0204]
【实施例二】
[0205]
实施例一以坦克大战a和坦克大战b为例,介绍了在终端a和终端b之间建立数据传输通道的第1对应用建立数据传输通道p的步骤。如上文所述(图4),本技术提供的建立数据传输通道的方法可以在终端a和终端b上的多对分布式应用之间建立数据传输通道,因此,本技术实施例二介绍在终端a和终端b的第1对应用之间已经建立数据传输通道之后,其他的配对应用之间建立数据传输通道的方法。
[0206]
具体地,下文以图库应用为例,介绍本实施例提供的建立数据传输通道的方法。即,下文将介绍在坦克大战a和坦克大战b之间已经建立数据传输通道之后,终端a上的图库应用与终端b上图库应用之间如何建立数据传输通道。可以理解,本实施例可以应用于除图库应用之外的其他应用。
[0207]
为便于表述,本文将终端a上的图库应用称为“图库a(作为第三应用程序)”,将终端b上的图库应用称为“图库b(作为第四应用程序)”。
[0208]
参考图12,本实施例提供的建立数据传输通道的方法,包括:
[0209]
s210:设备发现阶段,包括步骤s211~s213,具体为:
[0210]
s211:响应于用户输入的图片分享指令,终端a上的图库a向接口a发送设备发现请求;
[0211]
s212:响应于接收到图库a发送的设备发现请求,接口a开启终端a的设备扫描功能,以获取候选连接终端的设备信息。
[0212]
s213:接口a向图库a发送设备发现结果,图库a显示设备选择界面。
[0213]
本实施例的设备发现阶段s210与实施例一的设备发现阶段s110的过程实质相同,因此,本实施例的设备发现阶段s210的其他未述细节可参考实施例一中的叙述,不再赘述。
[0214]
s220:物理通道确认阶段,包括步骤s221和步骤s222,具体为:
[0215]
s221:图库a向接口a发送设备连接请求,设备连接请求用于指示接口a建立用于连接终端a和终端b的物理通道。
[0216]
s222:接口a向图库a返回物理通道已创建的通知。由于在实施例一中已经建立物
理通道,且终端终b已经对终端a进行授信,因此,当接口a接收到图库a发送的设备连接请求时,向图库a返回物理通道已创建的通知。
[0217]
s230:虚拟通道建立阶段,包括步骤s231~s235,具体为:
[0218]
s231:图库a与接口a创建虚拟通道c(作为第三进程间通信通道)。基于确认物理通道已创建,当图库a需要向图库b发送图片文件时,建立虚拟通道c。
[0219]
s232:接口a为虚拟通道c分配通道编号,该通道编号用于唯一标识虚拟通道c。
[0220]
s233:接口a向接口b发送虚拟通道c已建立的消息,以触发终端b一侧建立虚拟通道d。其中,接口a向接口b发送的虚拟通道a已建立的消息中,包括虚拟通道c的通道编号。
[0221]
s234:响应于接收到虚拟通道c已建立的消息,接口b与图库b创建虚拟通道d(作为第四进程间通信通道)。
[0222]
s235:接口b为虚拟通道d分配通道编号,该通道编号用于唯一标识虚拟通道d。具体地,接口b根据虚拟通道c的通道编号和实施例一中所述的编号设置规则确定虚拟通道d的通道编号。
[0223]
本实施例的虚拟通道建立阶段s230与实施例一的虚拟通道建立阶段s150的过程实质相同,因此,本实施例的虚拟通道建立阶段s230的其他未述细节可参考实施例一中的叙述,不再赘述。
[0224]
参考图13,在虚拟通道c和虚拟通道d建立完毕之后,虚拟通道c、物理通道和虚拟通道d依次连接形成用于连接图库a和图库b的数据传输通道,图库a和图库b可以基于该数据传输通道进行数据交互。
[0225]
本实施例中,终端上的多个通信应用程序(例如,终端a上的坦克大战a和图库a)均可通过接口a与对端设备进行通信,可避免各分布式应用重复开发通信模块,避免开发工作量的重复和浪费。
[0226]
由于在坦克大战a和坦克大战b建立数据传输通道的过程中,终端b已经对终端a进行授信,因此,在终端a和终端b上的后续配对应用(例如,图库a和图库b)建立数据传输通道时,可不必要重复终端b对终端a的授信过程,相较于现有技术中各配对应用之间建立通信连接时,均重复一次授信过程的情况,可以简化配对应用之间的连接过程。
[0227]
同样,在坦克大战a和坦克大战b建立数据传输通道的过程中,终端a和终端b分别接收到来自对端设备的秘钥,终端可通过接收到的该秘钥对终端a和终端b上的后续配对应用(例如,图库a和图库b)的业务数据进行加密。这样,终端a和终端b的后续配对应用在建立数据传输通道时,不必要重复秘钥交换过程,从而可进一步简化配对应用之间的连接过程。
[0228]
本实施例还可以节省终端中的通信资源(例如,端口号资源)。具体而言,由于本实施例通过一条物理通道(操作系统仅需为该物理通道分配端口号)即可实现多个应用之间的跨设备通信(例如,终端a上的坦克大战a和图库a),相对现有技术中(如图2所示)每个应用各自建立物理通道的情形(操作系统需要为每个物理通道分配端口号),可以节省系统中的端口号资源。
[0229]
另外,由于终端中的多个应用均通过通信接口程序进行跨设备通信,因此通信接口程序可方便地对各应用的传输优先级进行管理,优先保障对实时性要求高的业务数据的传输,提高用户体验。
[0230]
例如,当终端a中的坦克大战a和图库a需要同时通过物理通道传输数据时,接口a
根据坦克大战a和图库a的优先度等级确定业务数据传输的次序。本实施例中,由于坦克大战a对数据实时性的要求较高,因此坦克大战a的优先度等级较高;而图库a对数据实时性的要求较低,因此图库a的优先度等级较低。因此,当终端a中的坦克大战a和图库a需要同时通过物理通道传输数据时,接口a确定首先传输坦克大战a的业务数据,在一定时延(例如,2s)后,再传输图库a的业务数据。
[0231]
本实施例中,应用的优先度等级可以由应用自身确定,也可以由应用所在终端中的通信接口程序确定。例如,坦克大战a的优先度等级可以由坦克大战a自身确定,也可以由接口a确定。
[0232]
现在参考图14,所示为根据本技术的一个实施例的终端设备400的框图。终端设备400可以包括耦合到控制器中枢403的一个或多个处理器401。对于至少一个实施例,控制器中枢403经由诸如前端总线(fsb,front side bus)之类的多分支总线、诸如快速通道连(qpi,quickpath interconnect)之类的点对点接口、或者类似的连接406与处理器401进行通信。处理器401执行控制一般类型的数据处理操作的指令。在一实施例中,控制器中枢403包括,但不局限于,图形存储器控制器中枢(gmch,graphics&memory controller hub)(未示出)和输入/输出中枢(ioh,input output hub)(其可以在分开的芯片上)(未示出),其中gmch包括存储器和图形控制器并与ioh耦合。
[0233]
终端设备400还可包括耦合到控制器中枢403的协处理器402和存储器404。或者,存储器和gmch中的一个或两者可以被集成在处理器内(如本技术中所描述的),存储器404和协处理器402直接耦合到处理器401以及控制器中枢403,控制器中枢403与ioh处于单个芯片中。
[0234]
存储器404可以是例如动态随机存取存储器(dram,dynamic random access memory)、相变存储器(pcm,phase change memory)或这两者的组合。存储器404中可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性计算机可读介质。计算机可读存储介质中存储有指令,具体而言,存储有该指令的暂时和永久副本。当指令在计算机上运行时,使得计算机执行上述实施例一和/或实施例二公开的方法。
[0235]
如图14所示的终端设备400可以被分别被实现为终端a和终端b。当终端设备400被实现为终端a时,存储器404中存储的指令可以包括:由处理器中的至少一个执行时导致终端a实施如图7、图8a、图9a、图10a、图11a、图12所示的方法中由终端a实施的步骤的指令。当终端设备400被实现为终端b时,存储器404中存储的指令可以包括:由处理器中的至少一个执行时致使终端b实施如图7、图8a、图9a、图10a、图11a、图12所示的方法中由终端b实施的步骤的指令。
[0236]
在一个实施例中,协处理器402是专用处理器,诸如例如高吞吐量mic(many integrated core,集成众核)处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu(general-purpose computing on graphics processing units,图形处理单元上的通用计算)、或嵌入式处理器等等。协处理器402的任选性质用虚线表示在图14中。
[0237]
在一个实施例中,终端设备400可以进一步包括网络接口(nic,network interface controller)406。网络接口406可以包括收发器,用于为终端设备400提供无线电接口,进而与任何其他合适的设备(如前端模块,天线等)进行通信。在各种实施例中,网络接口406可以与终端设备400的其他组件集成。网络接口406可以实现上述实施例中的通
信单元的功能。
[0238]
终端设备400可以进一步包括输入/输出(i/o,input/output)设备405。i/o405可以包括:用户界面,该设计使得用户能够与终端设备400进行交互;外围组件接口的设计使得外围组件也能够与终端设备400交互;和/或传感器设计用于确定与终端设备400相关的环境条件和/或位置信息。
[0239]
值得注意的是,图14仅是示例性的。即虽然图14中示出了终端设备400包括处理器401、控制器中枢403、存储器404等多个器件,但是,在实际的应用中,使用本技术各方法的设备,可以仅包括终端设备400各器件中的一部分器件,例如,可以仅包含处理器401和网络接口406。图14中可选器件的性质用虚线示出。
[0240]
现在参考图15,所示为根据本技术的一实施例的soc(system on chip,片上系统)500的框图。在图15中,相似的部件具有同样的附图标记。另外,虚线框是更先进的soc的可选特征。在图15中,soc500包括:互连单元550,其被耦合至处理器510;系统代理单元580;总线控制器单元590;集成存储器控制器单元540;一组或一个或多个协处理器520,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(sram,static random-access memory)单元530;直接存储器存取(dma,direct memory access)单元560。在一个实施例中,协处理器520包括专用处理器,诸如例如网络或通信处理器、压缩引擎、gpgpu(general-purpose computing on graphics processing units,图形处理单元上的通用计算)、高吞吐量mic处理器、或嵌入式处理器等。
[0241]
静态随机存取存储器(sram)单元530可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性计算机可读介质。计算机可读存储介质中存储有指令,具体而言,存储有该指令的暂时和永久副本。当指令在计算机上运行时,使得计算机执行上述实施例一和/或实施例二中公开的方法。
[0242]
如图15所示的soc可以被分别设置在终端a和终端b中。当soc被设置在终端a中时,静态随机存取存储器(sram)单元530中存储有指令,该指令可以包括:由处理器中的至少一个执行时导致终端a实施如图7、图8a、图9a、图10a、图11a、图12所示的方法中由终端a实施的步骤的指令。当soc被设置在终端b中时,静态随机存取存储器(sram)单元530中存储有指令,该指令可以包括:由处理器中的至少一个执行时致使终端b实施如图7、图8a、图9a、图10a、图11a、图12所示的方法中由终端b实施的步骤的指令。
[0243]
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。符号“/”表示关联对象为或的关系。
[0244]
本技术的各方法实施方式均可以以软件、磁件、固件等方式实现。
[0245]
可将程序代码应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本技术的目的,处理系统包括具有诸如例如数字信号处理器(dsp,digital signal processor)、微控制器、专用集成电路(asic)或微处理器之类的处理器的任何系统。
[0246]
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
[0247]
至少一个实施例的一个或多个方面可以由存储在计算机可读存储介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“ip(intellectual property,知识产权)核”的这些表示可以被存储在有形的计算机可读存储介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
[0248]
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
再多了解一些

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

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

相关文献