CN106598756A - 不同应用程序之间的数据交互方法 - Google Patents
不同应用程序之间的数据交互方法 Download PDFInfo
- Publication number
- CN106598756A CN106598756A CN201611144000.4A CN201611144000A CN106598756A CN 106598756 A CN106598756 A CN 106598756A CN 201611144000 A CN201611144000 A CN 201611144000A CN 106598756 A CN106598756 A CN 106598756A
- Authority
- CN
- China
- Prior art keywords
- data
- link
- interaction
- sender
- reciever
- 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
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/543—User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种不同应用程序之间的数据交互方法,首先将要进行数据交互的应用程序通过端口进行连接,并在各应用程序分别建立监听来监听数据流中的数据传送,若有数据则接受该数据,并对其进行解析,解析出不同的数据请求,执行相应的功能处理,完成相应的操作,然后按照数据发送协议将请求的数据再发送到数据流中,由另一端获取数据流中的数据,同样要对得到的数据进行验证,继而确定获得的数据是否准确可信,而后完成相应的操作。使得同时运行的两个不同的应用程序,及时正确地完成两者之间的实时数据交互,同时又不影响独立程序的顺利运行,且内存空间使用少、占用时间短,数据交互迅速且准确。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种不同应用程序之间的数据交互方法。
背景技术
当前环境下有相当多的应用程序需要数据库数据的支持,但是数据库的建立与提取不仅耗时耗力而且有相当一部分工作是重复的。对于相关领域特别是同类产品而言,是不符合发展需要的。这就要求建立一种机制,既能满足不同应用程序对于数据的需要,又能更好的节约成本,更能安全迅速地完成数据发送与接收。
要实现不同应用程序之间的实时数据交互,现行的主要的方法之一是建立一个共同的数据服务器端,将数据存放在数据服务器端,两个软件A、B可以在需要的时候独立地去读写数据服务器端的数据。这种方法相对稳定也能准确反映数据的可用性,但是有一个很大的缺陷就是对于访问同一个数据时存在信任危机。
当然还有其他方法,对于运行在同一台机器上的两个应用程序之间的数据交互,一般就是开辟一段公共数据区间,用以存放相互传送的数据,软件A、B在需要的时候同样可以独立地读写该数据区间,以完成数据交互。该方法同样存在很大的弊端,就是占用空间以及访问优先级等。
对于大多数软件来说数据的实时性、准确性决定了软件的可信性与可执行性,是整个软件的核心命脉。而对于单独设立数据服务器端的方法来说数据的实时性姑且不论,在该工作模式下,数据本身没有任何的保护措施,应用程序A、B双方都可以对其任意读写,其数据几乎没有准确性可言,很大程度上影响了软件的推广使用,当然对于数据交互不多,A、B只读(或者只写)该方法还是可行的。
而对于开辟公共数据区间的方法来说,虽然解决了数据准确性问题,确实可以通过该数据区的操作标识来保护数据,但是对于数据空的申请是一次性的,这就导致在启动软件的时候必须开辟足够的区间来保存数据,但是无论对程序A还是程序B都不可能每次都访问那么大的数据区间,其某时刻完成某种功能仅仅需要特定的几个或者几十个数据而已,这种情况就造成了内存空间的浪费,那么对于多线程程序来说可是致命的,严重的甚至会致使软件崩溃。
发明内容
本发明的目的在于针对现有技术的不足,提供一种不同应用程序之间的数据交互方法,使得同时运行的两个不同的应用程序,及时正确地完成两者之间的实时数据交互,同时又不影响独立程序的顺利运行,且内存空间使用少、占用时间短,数据交互迅速且准确。
针对以上提到的各种缺陷,本发明将要进行数据交互的两个应用程序通过网络端口进行连接,只要是能够相互发现的两台主机,运行的应用程序就能通过指定的端口进行数据交互,对于运行在同一台机器的两个应用程序同样也可以通过指定的端口进行数据交互。该方法对于数据保护实现起来要简单的多,只要在发送的数据中约定一个标识,就可以判段数据的准确性;对于实时性而言,数据通过网络端口进行交互,其传送速度与执行应用程序的主机性能相关,现行的主流主机配置完全可以保证数据传送的实时性,即该方法即保证了两个应用程序之间的数据实时交互又保证了数据准的确性,同时又不影响软件的单独执行,完美解决了以前方法中存在的问题。
本发明的目的是这样实现的:一种不同应用程序之间的数据交互方法,包括如下步骤:
1)将要进行数据交互的应用程序通过端口进行连接,交互双方共用一段存储空间,交互双方分别建立监听来检查这个空间内是否有数据;
2)当发送方要向接受方发出某个数据请求时,发送方向这个共用存储空间写入第一数据链,接受方发现这个共用存储空间中有数据,会先将其中的第一数据链获取出来,然后对获取到的第一数据链按照既定的数据协议进行解析,判断该第一数据链是否准确;
21)若该第一数据链不准确,则接受方不做任何处理,丢弃获取的第一数据链,等待下一条数据请求数据链。实现该过程时,程序员预先设定的规则,可以分为两种,一是接受方发现数据链不准确,向发送方发送一条数据,即告知对方上一条数据链不准确,请重新发送;二是接受方不做任何处理反应,而发送在一段时间内(比如1秒)没有收到接受方返回的数据,则再次发送一条请求数据链。本发明优选第二种方法,可称为等待判断。
22)若该第一数据链准确,则接受方提取发送方想要的数据,将提取到的数据按照既定的数据协议组成第二数据链写到共用存储空间中,发送方发现共用存储空间中有数据,先获取其中的第二数据链,接着按照既定的数据协议解析该第二数据链,判断该第二数据链是否准确;
221)若该第二数据链不准确,则发送方不接受该数据,丢弃获取的第二数据链,并且再次发送数据请求数据链,即返回步骤2);
222)若该第二数据链准确,则发送方使用从其中解析出来的数据,即其本身请求的数据,完成其本身相关的工作。
数据的收发安全协议即所述的数据协议,完全由程序员自主定义,交互双方按相同的规则协议组装、解析即可。
交互双方建立链接是通过TCP协议。
各应用程序同时运行至少两个线程,其中,有一个线程用于完成监听数据区、获取数据链、发送数据请求等工作,其他的线程用于完成该应用程序的本职工作。
要进行数据交互的两个应用程序位于同一主机上。要进行数据交互的两个应用程序分别位于两个主机上,两个主机能够相互发现。运行在同一台主机上的两个应用程序肯定能够相互发现的,这里的发现就是指能够找到对方,而运行在两台主机上的两个应用程序,则必须是同一个网段的才能够找到对方,毕竟是通过IP/TCP 协议来通信。
本发明的有益效果为:由于本发明采用将要进行数据交互的应用程序通过网络端口进行连接,并在各应用程序分别建立监听来监听数据流中的数据传送,只要明确双方的网络地址,两个需要进行数据交互的应用程序A、B的链接就可以通过TCP协议实现,对于大多数编程语言均支持该协议。
当发送方A需要获取接受方B的数据时,发送方端通过端口向接受方端发送数据请求,接受方端接收发送方端发送的数据请求,并对数据请求进行解析,根据解析出的数据请求向接受方获取需要的数据,并将获取的数据通过端口发送给发送方端,发送方端获取接受方端发送的数据,并对获取的数据进行验证,判断获取的数据是否准确;若获取的数据准确,则将该数据发送给发送方,发送方获取该数据完成相应的任务。发送方、接受方双方的数据交互过程是一个相对独立的过程。在发送数据时,就可以确定要发送数据的大小,本方法采用数据流方式不仅占用内存空间少,而且占用时间短,对于多线程软件来说不会影响软件的执行。同时发送的数据流包含了既定的发送数据格式协议,即包含有自检标识位,只要A、B双方根据协议进行解析,就能很容易地判断出数据的准确性。采用数据流方式还有一个好处,就是对于该数据流本身而言,同一时间只能读或者写,即不存在A、B两端同时访问数据流的情况,而且一旦数据流中的数据被读取了,该数据流空间也会将数据清空,即成为一个不含任何数据的空流,等待下一次数据写入。而当数据流中有数据时,对该数据流进行写操作是不能将数据写入数据流,只有等到该数据流为空时才能写入;同样地当数据流为空时,是不能读数据流的,只会挂起等待数据流中有数据时才能读。这种特性即保护了发送的数据,也能使得A、B两端处于同步状态,保证两个软件的顺利执行。
且只要是能够相互发现的两台主机均可使用该方法,一个主机上的两个不同应用程序亦可使用该方法,适用范围广。
总之,本发明数据交互过程不仅速度快,而且不影响各自程序的独立执行,发送的数据本身有自检标识,内存空间使用少、占用时间短,数据交互迅速且准确。
术语解释
数据交互:两个应用程序相互向对方发送数据并接受对方发送过来的数据,获取对方的数据以支持本应用程序顺利正确执行的过程。
附图说明
图1为本发明的不同应用程序之间的数据交互方法的方法流程图。
具体实施方式
参见图1,一种不同应用程序之间的数据交互方法,包括如下步骤:将要进行数据交互的应用程序通过端口进行连接,交互双方共用一段存储空间,交互双方分别建立监听来检查这个空间内是否有数据。这个存储空间是虚拟的,当然也会占用主机的内存,(关于这个存储空间其大小是可变的,当然不会很大,绝大多数情况都能满足,默认即可)。发送方向这个空间写数据,接受方会在这个空间取数据,而监听代码就是检查这个空间内是否有数据。这里说的接受方和发送方是相对的。比如发送方(A)要向接受方(B)发出某个数据请求,就先向该共用存储空间中写入一段数据链,当接受方(B)发现这个共用存储空间中有数据了,会先将其中的数据获取出来,然后对获取到的数据进行分析,按照代码编写时双方就已经确定的数据格式也叫数据协议进行解析,确定该数据链正确的前提下,接受方(B)再去提取发送方(A)想要的数据。然后根据既定的数据协议组成一个数据链,写到共用存储空间中,接着发送方(A)同样地发现共用存储空间中有数据了,先获取其中的数据,接着按照既定的数据协议解析该数据链,数据准确则使用从其中解析出来的数据,也就是其本身请求的数据,完成发送方(A)本身相关的工作。数据的收发安全协议即所述的数据协议,完全由程序员自主定义,交互双方按相同的规则协议组装、解析即可。当数据解析发现数据链不准确时,程序员根据预先设定的规则,可以分为两种,一是接受方发现数据链不准确,向发送方发送一条数据,即告知对方上一条数据链不准确,请重新发送;二是接受方不做任何处理反应,而发送方在一段时间内(比如1秒)没有收到接受方返回的数据,则再次发送一条请求数据链。本实施例采用第二种方法,称为等待判断。
各应用程序同时运行至少两个线程,其中,有一个线程用于完成监听数据区、获取数据链、发送数据请求等工作,其他的线程用于完成该应用程序的本职工作。
而数据交互的双方通过TCP协议建立链接,若交互双方是运行在同一台主机上,两个应用程序肯定能够相互发现,其中一个应用程序使用本地地址与对方建立链接即可; 若交互双方分别位于两个主机上, 则必须是同一个网段上的两个主机, 其中一个应用程序使用对方的IP地址与对方建立链接。
本发明中首先通过既定的网络端口建立A、B两端的链接,并建立监听,监听数据流中是否有数据传送,若有数据则接受该数据,并对其进行解析(解析规则是程序员为A、B数据交互约定好的数据格式,也就是数据协议)。解析出不同的数据请求,执行相应的功能处理,完成相应的操作。然后按照数据发送协议将请求的数据再发送到数据流中,由另一端获取数据流中的数据,同样要对得到的数据进行验证(验证方法同样是按照由程序员约定了的数据格式进行验证,包括数据标识、数据长度等等),继而确定获得的数据是否准确可信,而后完成相应的操作。
只要明确双方的网络地址,A、B两端的链接就可以通过TCP协议实现,对于大多数编程语言均支持该协议。A、B双方的数据交互过程是一个相对独立的过程。在发送数据时,就可以确定要发送数据的大小,本方法采用数据流方式不仅占用内存空间少,而且占用时间短,对于多线程软件来说不会影响软件的执行。同时发送的数据流包含了既定的发送数据格式协议,即包含有自检标识位,只要A、B双方根据协议进行解析,就能很容易地判断出数据的准确性。
采用数据流方式还有一个好处,就是对于该数据流本身而言,同一时间只能读或者写,即不存在A、B两端同时访问数据流的情况,而且一旦数据流中的数据被读取了,该数据流空间也会将数据清空,即成为一个不含任何数据的空流,等待下一次数据写入。而当数据流中有数据时,对该数据流进行写操作是不能将数据写入数据流,只有等到该数据流为空时才能写入;同样地当数据流为空时,是不能读数据流的,只会挂起等待数据流中有数据时才能读。这种特性即保护了发送的数据,也能使得A、B两端处于同步状态,保证两个软件的顺利执行。
本发明不仅仅局限于上述实施例,在不背离本发明技术方案原则精神的情况下进行些许改动的技术方案,应落入本发明的保护范围。
Claims (5)
1.一种不同应用程序之间的数据交互方法,其特征在于,包括如下步骤:
1)将要进行数据交互的应用程序通过端口进行连接,交互双方共用一段存储空间,交互双方分别建立监听来检查这个空间内是否有数据;
2)当发送方要向接受方发出某个数据请求时,发送方向这个共用存储空间写入第一数据链,接受方发现这个共用存储空间中有数据,会先将其中的第一数据链获取出来,然后对获取到的第一数据链按照既定的数据协议进行解析,判断该第一数据链是否准确;
21)若该第一数据链不准确,则接受方不做任何处理,丢弃获取的第一数据链,等待下一条数据请求数据链;
22)若该第一数据链准确,则接受方提取发送方想要的数据,将提取到的数据按照既定的数据协议组成第二数据链写到共用存储空间中,发送方发现共用存储空间中有数据,先获取其中的第二数据链,接着按照既定的数据协议解析该第二数据链,判断该第二数据链是否准确;
221)若该第二数据链不准确,则发送方不接受该数据,丢弃获取的第二数据链,并且再次发送数据请求数据链;
222)若该第二数据链准确,则发送方使用从其中解析出来的数据,即其本身请求的数据,完成其本身相关的工作。
2.根据权利要求1所述的方法,其特征在于:交互双方建立链接是通过TCP协议。
3.根据权利要求1所述的方法,其特征在于:各应用程序同时运行至少两个线程,其中,有一个线程用于完成监听数据区、获取数据链、发送数据请求工作,其他的线程用于完成该应用程序的本职工作。
4.根据权利要求1所述的方法,其特征在于:要进行数据交互的两个应用程序位于同一主机上。
5.根据权利要求1所述的方法,其特征在于:要进行数据交互的两个应用程序分别位于两个主机上,两个主机能够相互发现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611144000.4A CN106598756B (zh) | 2016-12-13 | 2016-12-13 | 不同应用程序之间的数据交互方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611144000.4A CN106598756B (zh) | 2016-12-13 | 2016-12-13 | 不同应用程序之间的数据交互方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106598756A true CN106598756A (zh) | 2017-04-26 |
CN106598756B CN106598756B (zh) | 2020-06-16 |
Family
ID=58599026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611144000.4A Active CN106598756B (zh) | 2016-12-13 | 2016-12-13 | 不同应用程序之间的数据交互方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106598756B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220132A (zh) * | 2017-05-26 | 2017-09-29 | 努比亚技术有限公司 | 一种文件创建信息的监听方法、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129395A (zh) * | 2011-03-02 | 2011-07-20 | 智比特信息技术(镇江)有限公司 | 通过单一硬件串口实现多进程控制的通讯方法 |
CN103064748A (zh) * | 2013-01-05 | 2013-04-24 | 浪潮电子信息产业股份有限公司 | 一种Linux下处理多进程间通讯的方法 |
CN103176854A (zh) * | 2011-12-26 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 一种进程间通信方法、装置及系统 |
CN103970601A (zh) * | 2013-02-06 | 2014-08-06 | 北京壹人壹本信息科技有限公司 | 执行操作指令方法和装置 |
CN104133728A (zh) * | 2013-12-16 | 2014-11-05 | 腾讯科技(深圳)有限公司 | 一种进程间通讯的方法、及装置 |
CN104794038A (zh) * | 2015-03-19 | 2015-07-22 | 腾讯科技(深圳)有限公司 | 服务进程的监控方法和装置及通信系统 |
CN105138398A (zh) * | 2015-09-30 | 2015-12-09 | 山东乾云启创信息科技有限公司 | 同步通信模式下socket通信与进程管理通用平台及方法 |
CN105407150A (zh) * | 2015-10-31 | 2016-03-16 | 苏浩强 | 应用程序远程控制方法 |
-
2016
- 2016-12-13 CN CN201611144000.4A patent/CN106598756B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129395A (zh) * | 2011-03-02 | 2011-07-20 | 智比特信息技术(镇江)有限公司 | 通过单一硬件串口实现多进程控制的通讯方法 |
CN103176854A (zh) * | 2011-12-26 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 一种进程间通信方法、装置及系统 |
CN103064748A (zh) * | 2013-01-05 | 2013-04-24 | 浪潮电子信息产业股份有限公司 | 一种Linux下处理多进程间通讯的方法 |
CN103970601A (zh) * | 2013-02-06 | 2014-08-06 | 北京壹人壹本信息科技有限公司 | 执行操作指令方法和装置 |
CN104133728A (zh) * | 2013-12-16 | 2014-11-05 | 腾讯科技(深圳)有限公司 | 一种进程间通讯的方法、及装置 |
CN104794038A (zh) * | 2015-03-19 | 2015-07-22 | 腾讯科技(深圳)有限公司 | 服务进程的监控方法和装置及通信系统 |
CN105138398A (zh) * | 2015-09-30 | 2015-12-09 | 山东乾云启创信息科技有限公司 | 同步通信模式下socket通信与进程管理通用平台及方法 |
CN105407150A (zh) * | 2015-10-31 | 2016-03-16 | 苏浩强 | 应用程序远程控制方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220132A (zh) * | 2017-05-26 | 2017-09-29 | 努比亚技术有限公司 | 一种文件创建信息的监听方法、设备及存储介质 |
CN107220132B (zh) * | 2017-05-26 | 2021-01-22 | 努比亚技术有限公司 | 一种文件创建信息的监听方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106598756B (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20110252404A1 (en) | Web-based software debugging apparatus and method for remote debugging | |
CN105610819B (zh) | 提供服务器信息的查询服务的方法和装置 | |
CN110035087B (zh) | 一种从流量还原账号信息的方法、装置、设备及存储介质 | |
CN109474614A (zh) | 一种多协议的解析方法及系统 | |
CN107423180A (zh) | 一种固态硬盘及其诊断方法 | |
CN104410671A (zh) | 一种快照抓取方法和数据监控工具 | |
CN106201896A (zh) | 一种嵌入式环境下基于检查点的调试方法、系统及装置 | |
CN114880159A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN102130953A (zh) | 一种嵌入式web系统及交互方法 | |
CN106598756A (zh) | 不同应用程序之间的数据交互方法 | |
WO2024061380A1 (zh) | 一种工业互联网数据防护系统 | |
CN116737483B (zh) | 一种装配测试交互方法、装置、设备及存储介质 | |
CN109635027A (zh) | 一种数据库访问结果集探测的实现方法 | |
CN103905484A (zh) | 处理超文本传输协议请求的方法及装置 | |
CN111447273A (zh) | 云处理系统及基于云处理系统的数据处理方法 | |
CN110569178B (zh) | 基于大数据平台的接口预警方法和系统 | |
CN114125032B (zh) | 一种边缘协议数据处理方法和系统 | |
WO2012167536A1 (zh) | 多线程协同仿真方法及系统 | |
CN111131243B (zh) | Dpi系统策略处理方法及装置 | |
CN112181670B (zh) | 进程间通讯方法及装置和Linux设备 | |
CN108737568A (zh) | 一种基于消息队列服务器的数据交互系统和方法 | |
CN114598629A (zh) | 一种终端类型识别自动化测试系统及计算机设备 | |
CN114860480A (zh) | 基于Serverless的Web服务代理方法、装置及存储介质 | |
CN104144064A (zh) | 一种服务器故障检测及切换方法 | |
CN109086200B (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 |