CN111190748A - 数据共享方法、装置、设备及存储介质 - Google Patents
数据共享方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111190748A CN111190748A CN201911336178.2A CN201911336178A CN111190748A CN 111190748 A CN111190748 A CN 111190748A CN 201911336178 A CN201911336178 A CN 201911336178A CN 111190748 A CN111190748 A CN 111190748A
- Authority
- CN
- China
- Prior art keywords
- application
- shared space
- identification information
- applications
- socket
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种数据共享方法、装置、设备及存储介质,属于计算机技术领域。该方法包括:根据至少两个应用的安装文件,在至少两个应用之间建立套接字Socket连接,其中至少两个应用的安装文件中包括相同的Socket。通过第一应用创建共享空间,获取共享空间的第一标识信息,基于Socket连接向至少一个第二应用发送第一标识信息,通过任一应用根据第一标识信息访问共享空间。通过创建共享空间,并将第一标识信息同步至任一应用,任一应用即可根据第一标识信息访问共享空间,即使某一应用异常退出,其他应用仍可根据第一标识信息访问该应用在共享空间中存储的业务数据,使数据共享的过程更加便捷,提高数据共享的成功率。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种数据共享方法、装置、设备及存储介质。
背景技术
随着计算机技术的发展,终端安装有多个应用,这些应用运行时会产生业务数据,不同应用之间可以进行通信,来实现业务数据的共享。
例如,相关技术中采用Binder(捆绑)机制实现不同应用之间的数据共享。第一应用将操作请求通过Binder驱动程序发送给第二应用,第二应用接收到操作请求时对该操作请求进行处理,并将处理结果通过该Binder驱动程序返回给第二应用。
但是,两个应用通过Binder驱动程序进行通信以实现数据共享的过程中,若其中任一应用退出,则无法继续通信,也就无法进行数据共享。
发明内容
本申请实施例提供了一种数据共享方法、装置、设备及存储介质,可以解决相关技术存在的问题。所述技术方案如下:
一方面,提供了一种数据共享方法,所述方法包括:
根据至少两个应用的安装文件,在所述至少两个应用之间建立套接字Socket连接,所述至少两个应用的安装文件中包括相同的Socket;
通过第一应用创建共享空间,获取所述共享空间的第一标识信息;
通过所述第一应用,基于所述Socket连接向至少一个第二应用发送所述第一标识信息;
通过所述至少两个应用中的任一应用,根据所述第一标识信息访问所述共享空间;
其中,所述第一应用为所述至少两个应用中的任一应用,所述至少一个第二应用为所述至少两个应用中与所述第一应用不同的应用。
另一方面,提供了一种数据共享装置,所述装置包括:
连接建立模块,用于根据至少两个应用的安装文件,在所述至少两个应用之间建立套接字Socket连接,所述至少两个应用的安装文件中包括相同的Socket;
第一创建模块,用于通过第一应用创建共享空间,获取所述共享空间的第一标识信息;
交互模块,用于通过所述第一应用,基于所述Socket连接向至少一个第二应用发送所述第一标识信息;
访问模块,用于通过所述至少两个应用中的任一应用,根据所述第一标识信息访问所述共享空间;
其中,所述第一应用为所述至少两个应用中的任一应用,所述至少一个第二应用为所述至少两个应用中与所述第一应用不同的应用。
可选地,所述第一创建模块,包括:
第一创建单元,用于所述第一应用为所述第三应用时,当通过所述第一应用检测到业务启动时,创建所述共享空间,获取所述共享空间的第一标识信息。
可选地,所述第一创建模块,包括:
请求发送单元,用于所述第一应用为任一所述第四应用,当通过所述第一应用检测到业务启动时,基于所述Socket连接向所述第三应用发送创建请求;
第二创建单元,用于通过所述第三应用接收到所述创建请求时,创建所述共享空间,基于所述Socket连接向所述第一应用发送所述共享空间的第一标识信息;
接收单元,用于通过所述第一应用接收所述第一标识信息。
可选地,所述交互模块,包括:
标识发送单元,用于所述第一应用为所述第三应用时,通过所述第一应用,基于所述Socket连接向所述至少一个第二应用发送所述第一标识信息;或者,
所述标识发送单元,还用于所述第一应用为任一所述第四应用时,通过所述第一应用,基于所述Socket连接向所述第三应用发送所述第一标识信息;
所述标识发送单元,还用于通过所述第三应用接收到所述第一标识信息时,基于所述Socket连接向其他所述第四应用转发所述第一标识信息。
可选地,所述第一创建模块,包括:
第三创建单元,用于通过所述第一应用,获取所述第一应用的安装文件中的目标文件路径,将所述目标文件路径对应的目标文件作为所述共享空间,将所述目标文件的文件描述符作为所述第一标识信息。
可选地,所述第一创建模块,包括:
第四创建单元,用于通过所述第一应用,获取所述第一应用的安装文件中的目标内存地址,将所述目标内存地址对应的目标内存作为所述共享空间,将所述目标内存的文件描述符作为所述第一标识信息。
可选地,所述访问模块,包括:
映射单元,用于通过所述任一应用,根据所述第一标识信息将所述共享空间映射至所述任一应用的内存空间中;
访问单元,用于在所述内存空间中访问所述共享空间。
可选地,所述装置还包括:
第二创建模块,用于通过所述第一应用创建所述共享空间的进程锁,获取所述进程锁的第二标识信息;
所述交互模块,包括:
所述标识发送单元,还用于通过所述第一应用,基于所述Socket连接向至少一个第二应用发送所述第一标识信息和所述第二标识信息。
可选地,所述访问模块,包括:
确定单元,用于通过所述任一应用,根据所述第一标识信息确定所述共享空间;
获取单元,用于根据所述第二标识信息获取所述进程锁;
所述访问单元,还用于基于所述进程锁对所述共享空间进行锁定后,访问所述共享空间。
可选地,所述装置还包括:
解锁模块,用于访问所述共享空间完成后,基于所述进程锁对所述共享空间进行解锁。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行以实现如所述数据共享方法中所执行的操作。
再一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如所述数据共享方法中所执行的操作。
本申请实施例提供的方法、装置、设备及存储介质,根据至少两个应用的安装文件,在至少两个应用之间建立套接字Socket连接,其中至少两个应用的安装文件中包括相同的Socket。通过第一应用创建共享空间,获取共享空间的第一标识信息,通过第一应用,基于Socket连接向至少一个第二应用发送第一标识信息,通过至少两个应用中的任一应用,根据第一标识信息访问共享空间。因此通过创建共享空间,并将共享空间的第一标识信息同步至任一应用,任一应用即可根据第一标识信息访问共享空间,因此,即使某一应用异常退出,其他应用仍可根据第一标识信息访问该应用在共享空间中存储的业务数据,使数据共享的过程更加便捷,提高数据共享的成功率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种终端的示意图。
图2是本申请实施例提供的一种数据共享方法的流程图。
图3是本申请实施例提供的一种应用之间建立连接的示意图。
图4是本申请实施例提供的一种数据结构的示意图。
图5是本申请实施例提供的一种发送标识信息的示意图。
图6是本申请实施例提供的一种共享空间映射到内存的示意图。
图7是本申请实施例提供的另一种数据共享方法的流程图。
图8是本申请实施例提供的另一种数据共享方法的流程图。
图9是本申请实施例提供的一种数据共享装置的结构示意图。
图10是本申请实施例提供的另一种数据共享装置的结构示意图。
图11是本申请实施例提供的一种终端的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
可以理解,本申请所使用的的术语“第一”、“第二”、“第三”、“第四”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念区分。举例来说,在不脱离本申请的范围的情况下,可以将第一应用称为第二应用,将第二应用称为第一应用。
图1是本申请实施例提供的一种终端101的示意图,其中,终端101可以为手机、计算机、平板电脑、智能电视等多种类型的设备。参见图1,终端101上安装有多个应用,该多个应用中均集成了安装文件,安装文件中包括相同的Socket(套接字),终端101通过该Socket建立多个应用之间的Socket连接。终端101通过多个应用中的任一应用创建共享空间,并通过该任一应用,基于Socket连接向其他应用发送共享空间的第一标识信息,因此,该多个应用中的任一应用即可根据第一标识信息访问共享空间,实现数据共享。
图2是本申请实施例提供的一种数据共享方法的流程图。本申请实施例的执行主体为终端,参见图2,该方法包括:
201、终端通过至少两个应用中的第三应用,与第三应用的安装文件中的Socket进行绑定。
终端上安装有至少两个应用,其中,该至少两个应用的安装文件中包括相同的Socket。该安装文件用于安装应用,例如可以为SDK(Software Development Kit,软件开发工具包),SDK是为特定的软件包、软件框架、硬件平台、操作系统等建立应用时的开发工具的集合,可用于实现应用的功能。安装文件中包括Socket,应用可通过Socket发送或接收数据,该Socket可以由安装文件的开发人员设置,或者通过其他方式设置。
为了通过该Socket实现不同应用之间的数据共享,需要将应用与该Socket进行绑定或者连接。该Socket可与一个应用建立绑定关系,与Socket建立绑定关系的应用可以监听传入该Socket的请求。该Socket可与至少一个应用建立连接关系,与Socket建立连接关系的应用可以向该Socket发送请求,因此与该Socket建立绑定关系的一个应用可以与该Socket建立连接关系的至少一个应用进行通信,也即是在至少两个应用之间建立了Socket连接。
终端通过至少两个应用中的第三应用,调用bind(绑定)函数,请求与第三应用的安装文件中的Socket进行绑定,终端向该第三应用返回该绑定请求的响应结果。当该Socket未与其他应用进行绑定时,也即该第三应用为该终端上第一个请求与该Socket进行绑定的应用时,该第三应用与该Socket绑定成功,终端向第三应用返回绑定成功的响应结果,当该Socket已经与其他应用进行绑定时,则该第三应用与该Socket绑定失败,终端向第三应用返回绑定失败的响应结果。本申请实施例以该第三应用与该Socket绑定成功为例进行说明。
其中,第三应用为至少两个应用中的任一应用。
其中,bind函数用于请求将第三应用的端口号绑定到Socket上,以实现第三应用与Socket的绑定。
在一种可能实现方式中,终端上安装该第三应用后,检测到第三应用进行初始化时,如第三应用在该终端上首次启动时,终端通过该第三应用,与第三应用的安装文件中的Socket进行绑定。
在另一种可能实现方式中,终端上通过该第三应用与其他应用建立Socket连接,当终端通过第三应用检测到该第三应用与该其他应用的Socket连接断开后,终端通过该第三应用,与第三应用的安装文件中的Socket进行绑定。
202、终端通过至少两个应用中的至少一个第四应用,与至少一个第四应用的安装文件中的Socket进行连接。
终端通过至少两个应用中的第四应用,调用bind函数,请求与第四应用的安装文件中的Socket进行绑定,由于第四应用中的安装文件中的Socket与第三应用的安装文件的Socket相同,而该Socket已经与第三应用绑定成功,则该至少一个第四应用与Socket绑定失败,终端向该第四应用返回绑定失败的结果。
因此,当终端确定绑定失败时,终端通过该第四应用,调用connect(连接)函数,请求与该Socket进行连接。当第三应用通过Socket监听到第四应用的连接请求时,响应该连接请求,并向该第四应用返回连接请求的响应结果。当第四应用与Socket连接成功时,终端向该第四应用返回连接成功的响应结果,则该第四应用与第三应用建立Socket连接,第四应用可以通过该Socket连接与第三应用进行通信。当第四应用与Socket连接失败时,终端向该第四应用返回连接失败的响应结果,第四应用无法与第三应用建立Socket连接,则该第四应用无法与第三应用进行通信。本申请实施例以第四应用与该Socket连接成功为例进行说明。
其中,第四应用为至少两个应用中与第三应用不同的应用。
其中,connect函数用于通过第四应用向第三应用发起Socket连接请求。
可选地,与该Socket连接的应用的数量存在最大数量,例如,该最大数量为10,该Socket最多可与10个应用进行连接,终端通过第三应用接收到某一应用的连接请求时,确定当前与该Socket连接的应用的数量,若当前与该Socket连接的应用的数量小于10,则该应用与Socket连接成功,若当前与该Socket连接的应用的数量不小于10,则该应用与Socket连接失败。
在一种可能实现方式中,终端上安装该第四应用后,检测到第四应用进行初始化时,如第四应用在该终端上首次启动时,终端通过该第四应用,与第四应用的安装文件中的Socket进行连接。
在另一种可能实现方式中,终端上安装该第四应用后,该第四应用已经通过连接Socket与其他应用建立Socket连接,当终端通过第四应用检测到该第四应用与该其他应用的Socket连接断开后,终端通过该第四应用,与第四应用的安装文件中的Socket进行连接。例如,该第四应用与其他应用建立Socket连接后,该其他应用异常退出或者终端卸载该其他应用,则该第四应用与该其他应用的Socket连接断开。
其中,终端通过至少一个第四应用执行上述步骤,与至少一个第四应用的安装文件中的Socket进行连接。因此,在步骤201和202中,第三应用和至少一个第四应用的安装文件中包括相同的Socket,终端通过第三应用与Socket进行绑定,终端通过第四应用与Socket进行连接,则第三应用与至少一个第四应用建立Socket连接,也即是每个第四应用均与该第三应用建立Socket连接,实现了根据至少两个应用的安装文件,在至少两个应用之间建立Socket连接。
其中,与Socket进行绑定的第三应用为服务端应用(Server),与Socket进行连接的至少一个第四应用为客户端应用(Client)。服务端应用与客户端应用通过Socket连接进行通信,如图3所示,服务端应用与多个客户端应用建立Socket连接。其中,服务端应用有创建共享空间、创建进程锁、监听共享向空间等权限,客户端没有创建共享空间、创建进程锁、监听共享向空间等权限,因此服务端应用可为客户端应用提供服务,如通过服务端应用响应客户端应用的连接请求、创建共享空间的请求等,保证共享空间由服务端应用统一管理。
可选地,该Socket为Unix Domain Socket(网络套接字),Unix Domain Socket又叫IPC(Inter-Process Communication,进程间通信)Socket,用于实现同一计算机设备上的进程间通信,通过步骤201-202创建基于Unix Domain Socket的本地网络,该本地网络中包括至少两个应用,且该至少两个应用的安装文件中包括该Unix Domain Socket。
203、第一应用为第三应用时,当终端通过第一应用检测到业务启动,通过第一应用创建共享空间,获取共享空间的第一标识信息。
本申请实施例中,终端上的至少两个应用可以进行数据共享,以第一应用创建共享空间,与至少一个第二应用进行数据共享为例进行说明。其中,第一应用为至少两个应用中的任一应用,至少一个第二应用为至少两个应用中与第一应用不同的应用。
并且,第一应用可以为第三应用,也可以与第三应用不同,为上述至少一个第四应用中的任一第四应用。相应地,第二应用可以为第四应用,也可以为第三应用。为了便于说明,本申请实施例先以第一应用为第三应用为例。
终端在至少两个应用之间建立Socket连接后,终端通过该第一应用检测到业务启动时,通过第一应用创建该业务对应的共享空间,获取该共享空间的第一标识信息。
终端上的至少两个应用可基于安装文件实现多种相同的业务,如注册登录业务、消息发送业务、文件下载业务、视频通话业务等,在应用运行过程中,会产生每种业务对应的业务数据,至少两个应用之间需要进行业务数据的共享,以及实时数据同步。因此,当终端检测到业务启动时,通过第一应用创建该业务对应的共享空间,后续即可将至少两个应用中任一应用在该业务场景下产生的业务数据存储在该共享空间中。
该第一应用(第三应用)为至少两个应用中的服务端应用,服务端应用有创建共享空间的权限,因此该第一应用有创建共享空间的权限,则终端通过该第一应用检测到业务启动时,通过该第一应用创建共享空间即可。
创建共享空间时,终端为该共享空间创建第一标识信息,该第一标识信息用于唯一确定该共享空间,该第一标识信息可以为该共享空间对应的文件描述符、文件路径、内存地址等,可用编号、字符串等。
在另一种可能实现方式中,当终端检测到第一应用的业务启动时,判断是否已创建该业务对应的共享空间,当确定未创建该业务对应的共享空间时,通过第一应用创建对应的共享空间,当确定已创建该业务对应的共享空间时,则无需再次创建该业务对应的共享空间。
在另一种可能实现方式中,终端通过第一应用,获取第一应用的安装文件中的目标文件路径,将目标文件路径对应的目标文件作为共享空间,将目标文件的文件描述符作为第一标识信息。
该目标文件路径对应的目标文件位于终端的外部存储空间中,当终端检测到业务启动时,判断该第一应用是否有外部存储空间的访问权限,当确定第一应用有外部存储空间的访问权限时,则将外部存储空间中的目标文件作为共享空间,创建该目标文件的文件描述符,将该文件描述符作为第一标识信息。当确定第一应用没有外部存储空间的访问权限时,采用其他方法创建共享空间。
其中,该外部存储空间可以为终端上安装的sdcard(安全数码卡),目标文件为sdcard中的文件。
文件描述符(File Descriptor)是内核为了高效管理已被打开的文件所创建的索引,该文件描述符为一个非负整数,用于指代被打开的文件,通过文件描述符可访问对应的文件。每个文件描述符与一个文件对应,同时,不同的文件描述符也可能指向同一个文件。相同的文件可以被不同的进程打开,也可以在同一个进程中被多次打开。系统为每一个进程维护一个文件描述符表,因此在不同的进程中可能存在相同的文件描述符,相同的文件描述符可能指向同一个文件,也可能指向不同的文件。
如图4所示,终端用三个相关的数据结构来表示打开的文件,这三个数据结构分别为进程级的文件描述符表(File Descriptor Table)、系统级的打开文件表(Open FileTable)、文件系统的i-node表(一种文件属性信息表)。
文件描述符表中的条目记录了每个文件描述符的信息,包括控制标志和打开文件描述体指针。打开文件表中的条目称为Open File Description(打开文件描述体),存储了每个打开文件的信息,包括文件偏移量、访问模式和i-node(节点)对象指针。终端会为每个文件维护一个i-node表,i-node表中包括文件类型、文件锁列表、文件大小、访问权限等信息,其中文件类型可以为普通文件、目录文件、套接字文件、字符设备文件、块设备文件、内存文件等。
在另一种可能实现方式中,终端通过第一应用,获取第一应用的安装文件中的目标内存地址,将目标内存地址对应的目标内存作为共享空间,将目标内存的文件描述符作为第一标识信息。
当终端确定第一应用没有外部存储空间的访问权限时,将目标内存地址对应的目标内存作为共享空间,将目标内存的文件描述符作为第一标识信息。其中,该目标内存为终端通过匿名共享内存(Anonymous Shared Memory)机制创建的共享内存。
其中,目标内存为一种特殊的文件,因此终端在将目标内存作为共享空间时,可创建该目标内存的文件描述符,通过第一应用将该文件描述符作为共享空间的第一标识信息。
在另一实施例中,第一应用不是第三应用,而是任一第四应用时,当终端通过第一应用检测到业务启动时,基于Socket连接向第三应用发送创建请求。终端通过第三应用接收到创建请求时,创建共享空间,基于Socket连接向第一应用发送共享空间的第一标识信息,终端通过第一应用接收该第一标识信息。
此种情况下,该第一应用为至少两个应用中的客户端应用,客户端应用没有创建共享空间的权限,也即是该第一应用没有创建共享空间的权限,则终端通过第一应用,基于Socket连接,向第三应用(服务端应用)发送创建请求,创建请求中携带业务标识,该创建请求用于指示创建业务标识对应的共享空间。终端通过第三应用接收到该创建请求时,创建共享空间,获取该共享空间的第一标识信息,并基于Socket连接向第一应用发送该第一标识信息。
可选地,终端通过第三应用获取共享空间的第一标识信息后,基于Socket连接向至少两个应用中除第三应用以外的其他应用发送该第一标识信息。
204、终端通过该第一应用创建该共享空间的进程锁,获取进程锁的第二标识信息。
当终端通过第一应用创建共享空间,获取共享空间的第一标识信息后,通过该第一应用,在该第一应用的私有目录下,创建该共享空间的进程锁,并创建该进程锁的第二标识信息,通过第一应用获取该第二标识信息。
其中,进程锁用于对共享空间进行锁定或者解锁。可选地,终端通过第一应用将具有锁定和解锁功能的文件作为进程锁,也即该进程锁为文件锁。
其中,该第二标识信息用于唯一确定一个进程锁。进程锁为一种特殊的文件,因此终端在创建进程锁时,可创建该进程锁的文件描述符,将该文件描述符作为进程锁的第二标识信息。
205、终端通过该第一应用,基于Socket连接向至少一个第二应用发送第一标识信息和第二标识信息。
其中,至少一个第二应用为至少两个应用中与第一应用不同的应用。
当第一应用为第三应用时,该第一应用为服务端应用,因此该第一应用与至少一个第二应用直接建立了Socket连接,因此第一应用可直接与至少一个第二应用进行通信。则终端通过第一应用,基于Socket连接向至少一个第二应用发送共享空间的第一标识信息和进程锁的第二标识信息。
在一种可能实现方式中,第一应用为任一第四应用,该第一应用为客户端应用,由于客户端应用仅与服务端应用建立Socket连接,而未与其他客户端应用建立Socket连接,因此除服务端应用(第三应用)之外,该第一应用无法直接与其他任一第二应用进行通信。因此,终端通过第一应用,基于第一应用与第三应用的Socket连接,向第三应用发送第一标识信息和第二标识信息,终端通过第三应用接收到第一标识信息和第二标识信息时,基于Socket连接向其他第四应用转发第一标识信息和第二标识信息。
例如,如图5所示,服务端应用与客户端应用1、客户端应用2、客户端应用3建立Socket连接,客户端应用1向服务端应用发送对共享空间的创建请求,服务端应用根据创建请求创建共享空间,并将共享空间的第一标识信息同步给客户端应用1、客户端应用2和客户端应用3。
需要说明的是,本实施例中以创建共享空间和进程锁为例进行说明,在另一实施例中,还可以仅创建共享空间,不创建进程锁,也即是不执行步骤204。则在步骤205中,当第一应用为第三应用时,终端通过第一应用,基于Socket连接向至少一个第二应用发送第一标识信息。当第一应用为任一第四应用时,终端通过第一应用,基于第一应用与第三应用的Socket连接,向第三应用发送第一标识信息,终端通过第三应用接收到第一标识信息时,基于Socket连接向其他第四应用转发第一标识信息。
需要说明的是,本实施例仅说明了终端通过第一应用创建共享空间和进程锁,将第一标识信息和第二标识信息发送给至少一个第二应用。而在另一实施例中,该第一应用为任一第四应用,且该第四应用已经通过与第三应用建立Socket连接,获取到第一标识信息或者第二标识信息。当终端通过该第四应用检测到该第四应用与该第三应用的Socket连接断开后,终端通过该第四应用与新的第三应用建立Socket连接。此时为了实现数据同步,终端通过该第四应用,基于Socket连接向该新的第三应用发送第四应用获取的第一标识信息和第二标识信息,终端通过新的第三应用接收到第一标识信息和第二标识信息时,基于Socket连接向其他第四应用转发第一标识信息和第二标识信息。
其中,终端通过该第四应用已经获取到多个第一标识信息和第二标识信息,则终端通过该第四应用,基于Socket连接向该新的第三应用发送第四应用获取的多个第一标识信息和第二标识信息,终端通过新的第三应用接收到多个第一标识信息和第二标识信息时,基于Socket连接向其他第四应用转发该多个第一标识信息和第二标识信息。
206、终端通过任一应用,根据第一标识信息确定共享空间,根据第二标识信息获取进程锁,基于进程锁对共享空间进行锁定后,访问共享空间。
终端通过第一应用,基于Socket连接向至少一个第二应用发送第一标识信息和第二标识信息后,至少两个应用中的任一应用均获得共享空间的第一标识信息和进程锁的第二标识信息,因此任一应用均可根据第一标识信息和第二标识信息访问共享空间,通过共享空间实现不同应用间的数据共享。
因此,当终端通过任一应用检测到业务启动时,获取该业务对应的第一标识信息,根据第一标识信息,确定该业务对应的共享空间,并获取该业务对应的第二标识信息,根据该第二标识信息获取该共享空间的进程锁,基于该进程锁对共享空间进行锁定后,访问该共享空间。
其中,访问共享空间可以为读取共享空间中的业务数据、更改共享空间中的业务数据、在共享空间中添加业务数据等。
根据第一标识信息访问共享空间,无需受内存存储访问权限的限制,实现了native(本地)层的数据共享。根据第二标识信息获取进程锁,摆脱了Android(安卓,一种操作系统)沙箱机制的限制。
其中,终端通过任一应用,基于进程锁对共享空间进行锁定后,其他应用则无法访问该共享空间,能够保证共享空间中的业务数据在多个应用之间的一致性、实时性和安全性。
在一种可能实现方式中,终端通过任一应用,接收到第一标识信息后,通过该任一应用,根据第一标识信息将共享空间映射至该任一应用的内存空间中,在该任一应用的内存空间中访问共享空间。
将共享空间映射至应用的内存空间是指将目标文件或者目标内存映射到应用进程的内存空间,实现目标文件或者目标内存与应用进程的内存空间的映射关系。实现映射关系后,应用进程通过访问内存空间,即可采用指针的方式读写操作对应的目标文件或者目标内存。
可选地,终端还通过任一应用,接收到第二标识信息后,通过该任一应用,根据第二标识信息将进程锁映射到该任一应用的内存空间中,在该任一应用的内存空间中获取进程锁。
如图6所示,服务端应用与客户端应用1、客户端应用2、客户端应用3建立Socket连接,每个应用有各自的内存空间,例如,客户端应用3中,共享空间a映射到客户端应用3的内存空间A中,共享空间b映射到客户端应用3的内存空间B中,共享空间c映射到客户端应用3的内存空间C中。
207、访问共享空间完成后,终端通过该任一应用,基于该进程锁对共享空间进行解锁。
终端通过任一应用对共享空间进行访问,访问完成后,通过该任一应用,基于进程锁对该共享空间进行解锁,当对共享空间解锁后,终端即可通过其他任一应用,访问该共享空间。
第三应用作为服务端应用,监听该共享空间中的业务数据变化。当终端通过第三应用检测到业务数据发生变化时,基于Socket连接向任一第四应用发送通知消息,通知消息携带共享空间的第一标识信息,该通知消息用于通知共享空间中的业务数据发生变化。当终端通过任一第四应用接收到通知消息时,根据第一标识信息访问共享空间,读取共享空间中更新后的业务数据,由此实现不同应用之间的数据同步。
需要说明的是,本申请实施例说明了终端通过第一应用创建共享空间和进程锁,并将第一标识信息和第二标识信息发送给至少一个第二应用,终端通过任一应用基于进程锁对共享空间进行锁定之后,访问共享空间。而在另一实施例中,终端通过第一应用仅创建共享空间,并将第一标识信息发送给至少一个第二应用,终端通过任一应用访问共享空间,无需对共享空间进行锁定。
通过本申请实施例提供的方法,执行如图7所示的步骤,即可实现不同应用之间的数据共享,可应用于多种业务场景,例如在不同应用间实现后台拉取数据共享、应用开关状态共享、本地逻辑执行结果共享、底层进程间同步通信等。
参见图7,具体步骤如下:
1、创建基于Socket的本地网络:与Socket绑定成功的应用为服务端应用,与Socket绑定失败的应用为客户端应用。
2、通过服务端应用创建共享空间:服务端应用根据自身业务需求创建共享空间,客户端应用根据自身业务需求向服务端应用发送创建请求,由服务端应用为客户端应用创建共享空间。
3、通过服务端应用创建共享空间:如果服务端应用有外部存储权限,则将外部存储中的目标文件作为共享空间,如果服务端应用没有外部存储权限,则将目标内存作为共享空间。
4、通过服务端应用创建进程锁:服务端应用在私有目录下创建共享空间的进程锁,将进程锁的第二标识信息发送给客户端应用。
5、通过服务端应用同步共享空间和进程锁:服务端应用获取共享空间的第一标识信息和进程锁的第二标识信息,将第一标识信息和第二标识信息发送给客户端应用。
6、通过服务端应用和客户端应用访问共享空间前获取进程锁,基于进程锁将共享空间锁定后在共享空间中读写业务数据,访问完成后基于进程锁对共享空间解锁。
本申请实施例提供的方法,根据至少两个应用的安装文件,在至少两个应用之间建立套接字Socket连接,其中至少两个应用的安装文件中包括相同的Socket。通过第一应用创建共享空间,获取共享空间的第一标识信息,通过第一应用,基于Socket连接向至少一个第二应用发送第一标识信息,通过至少两个应用中的任一应用,根据第一标识信息访问共享空间。因此通过创建共享空间,并将共享空间的第一标识信息同步至任一应用,任一应用即可根据第一标识信息访问共享空间,因此,即使某一应用异常退出,其他应用仍可根据第一标识信息访问该应用在共享空间中存储的业务数据,使数据共享的过程更加便捷,提高数据共享的成功率。
并且,至少两个应用中,第三应用与Socket进行绑定,至少一个第四应用与Socket进行连接,则第三应用与至少一个第四应用建立Socket连接,由第三应用为至少一个第四应用服务,因此不同第四应用之间无需直接建立连接即可实现数据共享,简化了连接过程。
并且,终端通过第一应用创建共享空间的进程锁,根据进程锁对共享空间锁定后,访问该共享空间,其他应用则无法访问锁定后的共享空间,避免了多个应用进程同时访问同一共享空间而造成数据不同步,因此,保证了数据的同步性、实时性和安全性。
并且,相关技术中数据共享机制都是基于Android(安卓)平台进行开发的,只适用于Android平台,而本申请实施提供的方法,基于UNIX(一种分时操作系统)系统进行开发,适用于Android平台和IOS(IPhone Perating System,一种移动操作系统)平台,提高了数据共享的通用性。
并且,本申请实施例提供的方法,在至少两个应用的安装文件中设置相同的Socket,即可实现在至少两个应用之间建立Socket连接,无需开发其他辅助程序,降低了开发成本,且不会对应用的其他功能造成影响。
图8是本申请实施例提供的另一种数据共享方法的流程图,该方法应用于终端,参见图8,该方法包括:
1、终端通过多个应用与Socket进行绑定,绑定成功的为服务端应用,绑定失败的为客户端应用。
2、终端将客户端应用与Socket进行连接,建立客户端应用与服务端应用的Socket连接。
其中,当终端检测到服务端应用异常退出时,通知客户端应用,此时返回步骤1。
3、终端通过服务端应用创建共享空间,或者终端通过服务端应用接收到客户端应用的创建请求时,终端通过服务端应用创建共享空间。
4、终端判断服务端应用有无外部存储权限,当终端确定服务端应用有外部存储权限时,将外部存储空间中的目标文件作为共享空间;当终端确定服务端应用没有外部存储权限时,将目标内存作为共享空间。
5、终端通过服务端应用将共享空间的文件描述符发送给客户端应用。
6、终端通过服务端应用或者客户端应用获取文件描述符后,根据文件描述符访问共享空间。
7、终端通过服务端应用监听到共享空间中的数据发生变化时,向客户端应用发送通知消息,终端通过客户端应用读取共享空间中更新后的数据。
图9是本申请实施例提供的一种数据共享装置的结构示意图。参见图9,该装置包括:
连接建立模块901,用于根据至少两个应用的安装文件,在至少两个应用之间建立套接字Socket连接,至少两个应用的安装文件中包括相同的Socket;
第一创建模块902,用于通过第一应用创建共享空间,获取共享空间的第一标识信息;
交互模块903,用于通过第一应用,基于Socket连接向至少一个第二应用发送第一标识信息;
访问模块904,用于通过至少两个应用中的任一应用,根据第一标识信息访问共享空间;
其中,第一应用为至少两个应用中的任一应用,至少一个第二应用为至少两个应用中与第一应用不同的应用。
可选地,参见图10,连接建立模块901,包括:
绑定单元911,用于通过第三应用,与第三应用的安装文件中的Socket进行绑定;
连接单元921,用于通过至少一个第四应用,与至少一个第四应用的安装文件中的Socket进行连接,则第三应用与至少一个第四应用建立Socket连接;
其中,第三应用为至少两个应用中的任一应用,至少一个第四应用为至少两个应用中与第三应用不同的应用。
可选地,第一创建模块902,包括:
第一创建单元912,用于第一应用为第三应用时,当通过第一应用检测到业务启动时,创建共享空间,获取共享空间的第一标识信息。
可选地,第一创建模块902,包括:
请求发送单元922,用于第一应用为任一第四应用,当通过第一应用检测到业务启动时,基于Socket连接向第三应用发送创建请求;
第二创建单元932,用于通过第三应用接收到创建请求时,创建共享空间,基于Socket连接向第一应用发送共享空间的第一标识信息;
接收单元942,用于通过第一应用接收第一标识信息。
可选地,交互模块903,包括:
标识发送单元913,用于第一应用为第三应用时,通过第一应用,基于Socket连接向至少一个第二应用发送第一标识信息;或者,
标识发送单元913,还用于第一应用为任一第四应用时,通过第一应用,基于Socket连接向第三应用发送第一标识信息;
标识发送单元913,还用于通过第三应用接收到第一标识信息时,基于Socket连接向其他第四应用转发第一标识信息。
可选地,第一创建模块902,包括:
第三创建单元952,用于通过第一应用,获取第一应用的安装文件中的目标文件路径,将目标文件路径对应的目标文件作为共享空间,将目标文件的文件描述符作为第一标识信息。
可选地,第一创建模块902,包括:
第四创建单元962,用于通过第一应用,获取第一应用的安装文件中的目标内存地址,将目标内存地址对应的目标内存作为共享空间,将目标内存的文件描述符作为第一标识信息。
可选地,访问模块904,包括:
映射单元914,用于通过任一应用,根据第一标识信息将共享空间映射至任一应用的内存空间中;
访问单元924,用于在内存空间中访问共享空间。
可选地,装置还包括:
第二创建模块905,用于通过第一应用创建共享空间的进程锁,获取进程锁的第二标识信息;
交互模块903,包括:
标识发送单元913,还用于通过第一应用,基于Socket连接向至少一个第二应用发送第一标识信息和第二标识信息。
可选地,访问模块904,包括:
确定单元934,用于通过任一应用,根据第一标识信息确定共享空间;
获取单元944,用于根据第二标识信息获取进程锁;
访问单元924,还用于基于进程锁对共享空间进行锁定后,访问共享空间。
可选地,装置还包括:
解锁模块906,用于访问共享空间完成后,基于进程锁对共享空间进行解锁。
需要说明的是:上述实施例提供的数据共享装置在共享数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将终端的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据共享装置与数据共享方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例提供的数据共享装置,根据至少两个应用的安装文件,在至少两个应用之间建立套接字Socket连接,其中至少两个应用的安装文件中包括相同的Socket。通过第一应用创建共享空间,获取共享空间的第一标识信息,通过第一应用,基于Socket连接向至少一个第二应用发送第一标识信息,通过至少两个应用中的任一应用,根据第一标识信息访问共享空间。因此通过创建共享空间,并将共享空间的第一标识信息同步至任一应用,任一应用即可根据第一标识信息访问共享空间,因此,即使某一应用异常退出,其他应用仍可根据第一标识信息访问该应用在共享空间中存储的业务数据,使数据共享的过程更加便捷,提高数据共享的成功率。
图11示出了本申请一个示例性实施例提供的终端1100的结构示意图。
通常,终端1100包括有:处理器1101和存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以在集成有GPU(Graphics Processing Unit,图像处理的交互器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一条程序代码,该至少一条程序代码用于被处理器1101所具有以实现本申请中方法实施例提供的数据共享方法。
在一些实施例中,设备1100还可选包括有:外围设备接口1103和至少一个外围设备。处理器1101、存储器1102和外围设备接口1103之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1103相连。具体地,外围设备包括:射频电路1104、触摸显示屏1105、摄像头1106、音频电路1107、定位组件1108和电源1109中的至少一种。
外围设备接口1103可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和外围设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和外围设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它设备进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及8G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1105用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置终端1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在终端1100的不同表面或呈折叠设计;在一些实施例中,显示屏1105可以是柔性显示屏,设置在终端1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端1100的前面板,后置摄像头设置在终端1100的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。
定位组件1108用于定位终端1100的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1108可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源1109用于为终端1100中的各个组件进行供电。电源1109可以是交流电、直流电、一次性电池或可充电电池。当电源1109包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1100还包括有一个或多个传感器1110。该一个或多个传感器1110包括但不限于:加速度传感器1111、陀螺仪传感器1112、压力传感器1113、指纹传感器1114、光学传感器1115以及接近传感器1116。
加速度传感器1111可以检测以终端1100建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1111可以用于检测重力加速度在三个坐标轴上的分量。处理器1101可以根据加速度传感器1111采集的重力加速度信号,控制触摸显示屏1105以横向视图或纵向视图进行用户界面的显示。加速度传感器1111还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1112可以检测终端1100的机体方向及转动角度,陀螺仪传感器1112可以与加速度传感器1111协同采集用户对终端1100的3D动作。处理器1101根据陀螺仪传感器1112采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1113可以设置在终端1100的侧边框和/或触摸显示屏1105的下层。当压力传感器1113设置在终端1100的侧边框时,可以检测用户对终端1100的握持信号,由处理器1101根据压力传感器1113采集的握持信号进行左右手识别或快捷操作。当压力传感器1113设置在触摸显示屏1105的下层时,由处理器1101根据用户对触摸显示屏1105的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1114用于采集用户的指纹,由处理器1101根据指纹传感器1414采集到的指纹识别用户的身份,或者,由指纹传感器1114根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1101授权该用户具有相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1114可以被设置终端1100的正面、背面或侧面。当终端1100上设置有物理按键或厂商Logo时,指纹传感器1114可以与物理按键或厂商标志集成在一起。
光学传感器1115用于采集环境光强度。在一个实施例中,处理器1101可以根据光学传感器1115采集的环境光强度,控制触摸显示屏1105的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1105的显示亮度;当环境光强度较低时,调低触摸显示屏1105的显示亮度。在另一个实施例中,处理器1101还可以根据光学传感器1115采集的环境光强度,动态调整摄像头组件1106的拍摄参数。
接近传感器1116,也称距离传感器,通常设置在终端1100的前面板。接近传感器1116用于采集用户与终端1100的正面之间的距离。在一个实施例中,当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变小时,由处理器1101控制触摸显示屏1105从亮屏状态切换为息屏状态;当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变大时,由处理器1101控制触摸显示屏1105从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请实施例还提供了一种用于数据共享的计算机设备,该计算机设备包括处理器和存储器,存储器中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述实施例的数据共享方法中所具有的操作。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述实施例的数据共享方法中所具有的操作。
本申请实施例还提供了一种计算机程序,该计算机程序包括至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述实施例的数据共享方法中所具有的操作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请实施例的可选实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种数据共享方法,其特征在于,所述方法包括:
根据至少两个应用的安装文件,在所述至少两个应用之间建立套接字Socket连接,所述至少两个应用的安装文件中包括相同的Socket;
通过第一应用创建共享空间,获取所述共享空间的第一标识信息;
通过所述第一应用,基于所述Socket连接向至少一个第二应用发送所述第一标识信息;
通过所述至少两个应用中的任一应用,根据所述第一标识信息访问所述共享空间;
其中,所述第一应用为所述至少两个应用中的任一应用,所述至少一个第二应用为所述至少两个应用中与所述第一应用不同的应用。
2.根据权利要求1所述的方法,其特征在于,所述根据至少两个应用的安装文件,在所述至少两个应用之间建立套接字Socket连接,包括:
通过第三应用,与所述第三应用的安装文件中的所述Socket进行绑定;
通过至少一个第四应用,与所述至少一个第四应用的安装文件中的所述Socket进行连接,则所述第三应用与所述至少一个第四应用建立所述Socket连接;
其中,所述第三应用为所述至少两个应用中的任一应用,所述至少一个第四应用为所述至少两个应用中与所述第三应用不同的应用。
3.根据权利要求2所述的方法,其特征在于,所述通过第一应用创建共享空间,获取所述共享空间的第一标识信息,包括:
所述第一应用为所述第三应用,当通过所述第一应用检测到业务启动时,创建所述共享空间,获取所述共享空间的第一标识信息。
4.根据权利要求2所述的方法,其特征在于,所述通过第一应用创建共享空间,获取所述共享空间的第一标识信息,包括:
所述第一应用为任一所述第四应用,当通过所述第一应用检测到业务启动时,基于所述Socket连接向所述第三应用发送创建请求;
通过所述第三应用接收到所述创建请求时,创建所述共享空间,基于所述Socket连接向所述第一应用发送所述共享空间的第一标识信息;
通过所述第一应用接收所述第一标识信息。
5.根据权利要求2所述的方法,其特征在于,所述通过所述第一应用,基于所述Socket连接向至少一个第二应用发送所述第一标识信息,包括:
所述第一应用为所述第三应用,通过所述第一应用,基于所述Socket连接向所述至少一个第二应用发送所述第一标识信息;或者,
所述第一应用为任一所述第四应用,通过所述第一应用,基于所述Socket连接向所述第三应用发送所述第一标识信息;
通过所述第三应用接收到所述第一标识信息时,基于所述Socket连接向其他所述第四应用转发所述第一标识信息。
6.根据权利要求1所述的方法,其特征在于,所述通过第一应用创建共享空间,获取所述共享空间的第一标识信息,包括:
通过所述第一应用,获取所述第一应用的安装文件中的目标文件路径,将所述目标文件路径对应的目标文件作为所述共享空间,将所述目标文件的文件描述符作为所述第一标识信息。
7.根据权利要求1所述的方法,其特征在于,所述通过第一应用创建共享空间,获取所述共享空间的第一标识信息,包括:
通过所述第一应用,获取所述第一应用的安装文件中的目标内存地址,将所述目标内存地址对应的目标内存作为所述共享空间,将所述目标内存的文件描述符作为所述第一标识信息。
8.根据权利要求1所述的方法,其特征在于,所述通过所述至少两个应用中的任一应用,根据所述第一标识信息访问所述共享空间,包括:
通过所述任一应用,根据所述第一标识信息将所述共享空间映射至所述任一应用的内存空间中,在所述内存空间中访问所述共享空间。
9.根据权利要求1所述的方法,其特征在于,所述通过第一应用创建共享空间,获取所述共享空间的第一标识信息之后,所述方法还包括:
通过所述第一应用创建所述共享空间的进程锁,获取所述进程锁的第二标识信息;
所述通过所述第一应用,基于所述Socket连接向至少一个第二应用发送所述第一标识信息,包括:
通过所述第一应用,基于所述Socket连接向至少一个第二应用发送所述第一标识信息和所述第二标识信息。
10.根据权利要求9所述的方法,其特征在于,所述通过所述至少两个应用中的任一应用,根据所述第一标识信息访问所述共享空间,包括:
通过所述任一应用,根据所述第一标识信息确定所述共享空间;
根据所述第二标识信息获取所述进程锁;
基于所述进程锁对所述共享空间进行锁定后,访问所述共享空间。
11.根据权利要求10所述的方法,其特征在于,所述基于所述进程锁对所述共享空间进行锁定后,访问所述共享空间之后,所述方法还包括:
访问所述共享空间完成后,基于所述进程锁对所述共享空间进行解锁。
12.一种数据共享装置,其特征在于,所述装置包括:
连接建立模块,用于根据至少两个应用的安装文件,在所述至少两个应用之间建立套接字Socket连接,所述至少两个应用的安装文件中包括相同的Socket;
第一创建模块,用于通过第一应用创建共享空间,获取所述共享空间的第一标识信息;
交互模块,用于通过所述第一应用,基于所述Socket连接向至少一个第二应用发送所述第一标识信息;
访问模块,用于通过所述至少两个应用中的任一应用,根据所述第一标识信息访问所述共享空间;
其中,所述第一应用为所述至少两个应用中的任一应用,所述至少一个第二应用为所述至少两个应用中与所述第一应用不同的应用。
13.根据权利要求12所述的装置,其特征在于,所述连接建立模块,包括:
绑定单元,用于通过第三应用,与所述第三应用的安装文件中的所述Socket进行绑定;
连接单元,用于通过至少一个第四应用,与所述至少一个第四应用的安装文件中的所述Socket进行连接,则所述第三应用与所述至少一个第四应用建立所述Socket连接;
其中,所述第三应用为所述至少两个应用中的任一应用,所述至少一个第四应用为所述至少两个应用中与所述第三应用不同的应用。
14.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现如权利要求1至11任一所述的数据共享方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如权利要求1至11任一所述的数据共享方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911336178.2A CN111190748B (zh) | 2019-12-23 | 2019-12-23 | 数据共享方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911336178.2A CN111190748B (zh) | 2019-12-23 | 2019-12-23 | 数据共享方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111190748A true CN111190748A (zh) | 2020-05-22 |
CN111190748B CN111190748B (zh) | 2023-06-09 |
Family
ID=70707454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911336178.2A Active CN111190748B (zh) | 2019-12-23 | 2019-12-23 | 数据共享方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111190748B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256460A (zh) * | 2020-11-24 | 2021-01-22 | 北京元心科技有限公司 | 进程间通信方法、装置、电子设备及计算机可读存储介质 |
CN112802232A (zh) * | 2021-03-22 | 2021-05-14 | 智道网联科技(北京)有限公司 | 视频流数据的传输方法及其相关装置 |
CN112905328A (zh) * | 2021-03-04 | 2021-06-04 | 杭州海康威视数字技术股份有限公司 | 任务处理方法、装置及计算机可读存储介质 |
CN113407259A (zh) * | 2021-07-13 | 2021-09-17 | 北京百度网讯科技有限公司 | 加载场景的方法、装置、设备以及存储介质 |
CN114302199A (zh) * | 2021-06-09 | 2022-04-08 | 海信视像科技股份有限公司 | 显示设备和数据共享方法 |
CN115118714A (zh) * | 2022-06-24 | 2022-09-27 | Oppo广东移动通信有限公司 | 数据共享方法、系统及装置、终端设备及存储介质 |
CN115396414A (zh) * | 2022-08-29 | 2022-11-25 | 企查查科技有限公司 | 基于WebSocket实现多页面共享的方法、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090064194A1 (en) * | 2007-08-28 | 2009-03-05 | Red Hat, Inc. | Event driven sendfile |
CN105868028A (zh) * | 2015-01-23 | 2016-08-17 | 华为技术有限公司 | 一种进程间共享数据的方法、装置及终端 |
CN106874125A (zh) * | 2017-01-13 | 2017-06-20 | 北京元心科技有限公司 | 多容器系统间共享系统资源的方法及装置 |
CN107894920A (zh) * | 2017-11-09 | 2018-04-10 | 广东欧珀移动通信有限公司 | 资源配置方法及相关产品 |
CN108694092A (zh) * | 2018-05-11 | 2018-10-23 | 华中科技大学 | 一种面向并行应用的容器通信方法和系统 |
CN110069346A (zh) * | 2019-04-26 | 2019-07-30 | 杭州迪普科技股份有限公司 | 多进程间资源共享方法、装置、电子设备 |
CN110399229A (zh) * | 2018-04-25 | 2019-11-01 | 清华大学 | 进程间的通信方法、装置、系统、介质及终端 |
-
2019
- 2019-12-23 CN CN201911336178.2A patent/CN111190748B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090064194A1 (en) * | 2007-08-28 | 2009-03-05 | Red Hat, Inc. | Event driven sendfile |
CN105868028A (zh) * | 2015-01-23 | 2016-08-17 | 华为技术有限公司 | 一种进程间共享数据的方法、装置及终端 |
CN106874125A (zh) * | 2017-01-13 | 2017-06-20 | 北京元心科技有限公司 | 多容器系统间共享系统资源的方法及装置 |
CN107894920A (zh) * | 2017-11-09 | 2018-04-10 | 广东欧珀移动通信有限公司 | 资源配置方法及相关产品 |
CN110399229A (zh) * | 2018-04-25 | 2019-11-01 | 清华大学 | 进程间的通信方法、装置、系统、介质及终端 |
CN108694092A (zh) * | 2018-05-11 | 2018-10-23 | 华中科技大学 | 一种面向并行应用的容器通信方法和系统 |
CN110069346A (zh) * | 2019-04-26 | 2019-07-30 | 杭州迪普科技股份有限公司 | 多进程间资源共享方法、装置、电子设备 |
Non-Patent Citations (4)
Title |
---|
DIEGO KREUTZ: ""Software-Defined Networking: A Comprehensive Survey"", 《 PROCEEDINGS OF THE IEEE 》, vol. 103, no. 1, pages 221 - 224 * |
FINDUMARS: ""windows下进程间通信的(13种方法) "", pages 1 - 7, Retrieved from the Internet <URL:《https://www.cnblogs.com/findumars/p/6329593.html》> * |
MARSHALL KIRK MCKUSICK, 西安电子科技大学出版社 * |
徐诗理: ""基于GDBus框架的智能网关的应用模块设计和实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 2019, pages 136 - 55 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256460A (zh) * | 2020-11-24 | 2021-01-22 | 北京元心科技有限公司 | 进程间通信方法、装置、电子设备及计算机可读存储介质 |
CN112905328A (zh) * | 2021-03-04 | 2021-06-04 | 杭州海康威视数字技术股份有限公司 | 任务处理方法、装置及计算机可读存储介质 |
CN112905328B (zh) * | 2021-03-04 | 2023-09-19 | 杭州海康威视数字技术股份有限公司 | 任务处理方法、装置及计算机可读存储介质 |
CN112802232A (zh) * | 2021-03-22 | 2021-05-14 | 智道网联科技(北京)有限公司 | 视频流数据的传输方法及其相关装置 |
CN112802232B (zh) * | 2021-03-22 | 2021-07-16 | 智道网联科技(北京)有限公司 | 视频流数据的传输方法及其相关装置 |
CN114302199A (zh) * | 2021-06-09 | 2022-04-08 | 海信视像科技股份有限公司 | 显示设备和数据共享方法 |
CN113407259A (zh) * | 2021-07-13 | 2021-09-17 | 北京百度网讯科技有限公司 | 加载场景的方法、装置、设备以及存储介质 |
CN115118714A (zh) * | 2022-06-24 | 2022-09-27 | Oppo广东移动通信有限公司 | 数据共享方法、系统及装置、终端设备及存储介质 |
CN115396414A (zh) * | 2022-08-29 | 2022-11-25 | 企查查科技有限公司 | 基于WebSocket实现多页面共享的方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111190748B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108881030B (zh) | 灰度发布场景下的路由方法及装置 | |
CN110674022B (zh) | 行为数据获取方法、装置及存储介质 | |
CN111190748B (zh) | 数据共享方法、装置、设备及存储介质 | |
CN108805560B (zh) | 数值整合方法、装置、电子设备及计算机可读存储介质 | |
CN111159604A (zh) | 图片资源加载方法及装置 | |
CN113190362B (zh) | 服务调用方法、装置、计算机设备及存储介质 | |
CN111866140A (zh) | 融合管理设备、管理系统、服务调用方法及介质 | |
CN110704324A (zh) | 应用调试方法、装置及存储介质 | |
CN110290191B (zh) | 资源转移结果处理方法、装置、服务器、终端及存储介质 | |
CN113377647B (zh) | 页面处理方法、装置、服务器、终端及可读存储介质 | |
CN110825465B (zh) | 日志数据处理方法、装置、电子设备及存储介质 | |
CN111580892B (zh) | 一种业务组件调用的方法、装置、终端和存储介质 | |
CN111881423A (zh) | 限制功能使用授权方法、装置、系统 | |
CN111130985B (zh) | 关联关系建立方法、装置、终端、服务器及存储介质 | |
CN111198922A (zh) | 基于区块链的游戏资源管理方法及装置 | |
CN110597840A (zh) | 基于区块链的伴侣关系建立方法、装置、设备及存储介质 | |
CN111131619B (zh) | 账号切换处理的方法、装置及系统 | |
CN112988254B (zh) | 管理硬件设备的方法、装置和设备 | |
CN114900559A (zh) | 管理系统、终端、管理方法以及存储介质 | |
CN110971692B (zh) | 开通服务的方法、装置及计算机存储介质 | |
CN112765571A (zh) | 权限管理方法、系统、装置、服务器及存储介质 | |
CN111191254A (zh) | 访问校验方法、装置、计算机设备及存储介质 | |
CN112260845A (zh) | 进行数据传输加速的方法和装置 | |
CN113746831B (zh) | 权限验证方法、装置及存储介质 | |
CN112612397B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |