一种应用软件的进程间通信方法和系统的制作方法

文档序号:7694701阅读:125来源:国知局
专利名称:一种应用软件的进程间通信方法和系统的制作方法
技术领域
本发明涉及计算机领域,尤其涉及一种应用软件的进程间通信方法和系统,具体地说,本发明涉及一种通信软件的与操作系统无关的进程间通信方法和系统。
背景技术
进程是操作系统动态执行的基本单元,是程序的执行过程。进程与进程之间有时为了协同工作需要进行通信。在目前最广泛使用的操作系统如Windows和Linux系统中,存在多种进程间通信的方法,具体来说,Windows系统有匿名管道、命名管道、邮槽和共享内存,而Linux系统则有管道、命名管道、消息队列、共享内存和信号量。所以尽管Window和Linux系统中都有管道和共享内存,但是它们在使用上还有一些区别。例如,Windows的命名管道支持全双工, 可以跨网络,而Linux的命名管道只支持半双工,不能跨网络。这样技术人员在开发一个涉及通信的软件项目时,如果想让该项目同时支持多个操作系统,就不得不根据各操作系统提供的底层API (Application Programming Interface,应用程序编程接口)分别编写一套软件代码。这不但会增加项目代码的复杂度,还会增加项目的维护成本。

发明内容
本发明的主要目的在于提供一种应用软件的进程间通信方法和系统,使得进程之间的通信与操作系统无关。本发明公开了一种应用软件的进程间通信方法,用于客户进程A和客户进程B之间的通信,或者客户进程A和客户进程B分别要响应的广播服务;包括以下步骤
步骤A :客户进程A向守护进程模块发出服务请求,要求返回客户进程B提供的一个或多个服务;
步骤B :所述守护进程模块收到所述客户进程A发出的服务请求后,转发给所述客户进程B ;
步骤C :所述客户进程B接收并处理所述客户进程A的服务请求,并将处理结果返回给所述守护进程模块;
步骤D :所述守护进程模块将所述客户进程B的处理结果返回给所述客户进程A。在所述步骤A之前还可以包括以下步骤
所述守护进程模块启动并建立一个套接字,用于监控和等待客户的注册请求和服务请
求;
所述客户进程A向所述守护进程模块发出注册请求,请求中包含客户的注册信息;所述守护进程模块监控到客户进程A的注册请求后,将所述客户进程A的注册信息保存到数据库中并返回注册成功的消息。所述注册信息中可以包括客户名称、客户提供的服务及客户所要响应的广播消
肩、O
所述守护进程模块监控到客户进程A的注册请求后,首先检查所述客户进程A注册的客户名称是否存在,若已存在则向所述客户进程A返回注册失败的信息。在所述步骤B中,所述守护进程模块收到所述客户进程A发出的服务请求后,首先检查数据中是否存在客户进程B的注册信息,若不存在则向所述客户进程A返回服务请求失败的信息,否则进入以下步骤 进一步检查客户进程B的注册信息中是否存在所述客户进程A请求的服务,若存在则将所述客户进程A发出的服务请求转发给所述客户进程B,否则向所述客户进程A返回服务请求失败的信息。本发明还公开了一种应用软件的进程间通信系统,包括守护进程模块,用于接收客户的注册信息,监控、转发和响应客户的服务请求信息;所述守护进程模块进一步包括
服务请求接收模块,用于接收客户发出的一个或多个服务请求;
服务请求转发模块,用于将所述客户发出的一个或多个服务请求转发给服务提供者; 服务结果接收模块,用于接收所述服务提供者提供的服务响应结果;
服务结果返回模块,用于将所述服务提供者提供的服务响应结果返回给所述客户;所述服务请求模块、所述服务请求转发模块和所述服务请求者顺序连接,所述服务请求者还与所述服务结果接收模块、所述服务结果返回模块顺序连接。 所述守护进程模块还可以包括
套接字模块,用于监控和等待客户发出的注册请求和服务请求;
注册请求接收模块,用于接收客户发出的注册请求。所述守护进程模块还可以进一步包括
注册信息处理模块,用于检查客户注册的客户名称是否存在,若存在则向所述客户返回注册失败的信息,否则保存所述客户的注册信息并返回注册成功的消息。所述守护进程模块还可以进一步包括
服务请求检查模块,用于检查数据库中是否存在客户所指定的服务提供者及服务内容。本发明公开的一种应用软件的进程间通信方法和系统,因为具有守护进程模块,利用操作系统底层的网络通信API,为不同客户进程间进行操作系统无关的通信;技术人员在开发涉及通信的软件项目时,不必为每种操作系统都独立开发一套代码,减少了代码的复杂度,降低了软件的开发和维护成本。


图I是本发明的进程间通信方法的流程图。图2是本发明的守护进程模块的数据结构示意图。图3是本发明的守护进程模块处理客户进程的注册请求之后的方法流程图。图4是本发明的守护进程模块处理客户进程的注册请求的方法流程图。图5是本发明的守护进程模块处理用户的服务请求的方法流程图。图6是本发明的应用软件的进程间通信系统的方框图。
具体实施方式
下面结合附图和具体实施方式
对本发明作进一步详细说明。目前各个不同的操作系统基本都遵循Unix网络通信标准,虽然不同的操作系统可能会存在不同的封装,但底层的网络通信API都基本相同。本发明就是利用了不同操作系统的底层网络通信API —致的情况,通过内部的封装,形成了与底层操作系统无关的方便实用的进程间通信机制。下面首先介绍本发明的操作系统无关的进程间通信系统。本发明采用如下定义守护进程,此进程负责接收客户注册/撤消、消息转发、系统消息广播、和实现客户监护。客户进程,代表通信的发起者或接收者。本发明公开一种操作系统无关的进程间通信方法,客户进程之间不直接通信,而是通过守护进程转发信息,守护进程与客户进程之间通过底层的网络通信API联系。守护进程模块用于接收客户的注册信息,监控、转发和响应客户的服务请求信息;为了使本发明便于理解,下面先对守护进程模块进行详细说明。
如图I所示是本发明的进程间通信方法的流程图,作为本发明的一个实施例,客户进程A和客户进程B之间的通信包括以下步骤
1、客户进程A向守护进程模块进行客户注册;
2、守护进程模块返回客户进程A注册成功信息;
3、客户进程A向守护进程模块提出服务请求;
4、守护进程模块向客户进程B提出服务请求;
5、客户进程B向守护进程模块返回处理结果;
6、守护进程模块向客户进程A返回处理结果。如图2所示是本发明的守护进程模块的数据结构示意图,所述守护进程模块存储有客户的注册信息、当前注册的用户数以及当前注册的系统广播消息数,所述客户的注册信息包括客户名称、客户提供的服务、客户所要响应的广播消息。每一客户都可以将自己的名称、自己可提供的服务以及自己要相应的广播消息注册到守护进程模块中,从而守护进程模块可以启动对客户行为的监视,当一个客户需要使用另一个客户注册的服务时,守护进程模块可以为这个客户提供相关服务。守护进程模块启动并建立一个套接字,用于监控和等待客户的注册请求和服务请求。图2中有客户进程A向所述守护进程模块发出注册请求,请求中包含客户的注册信息。客户进程A注册时,需要提交的注册信息包括客户名称、客户自身可提供的服务以及客户所要响应的广播消息,这种可以提供的服务不止一种,要响应的广播消息不止一条。这样守护进程模块可以根据客户进程A注册的信息,为客户进程A发送其需要收听的广播消息。同时,当有其他客户需要客户进程A提供服务时,守护进程模块可以为其他客户转发客户A的服务内容。所述守护进程模块监控到客户A的注册请求后,将所述客户A的注册信息保存到数据库中并返回注册成功的消息。容易理解,守护进程模块的上述功能可以通过各种编程语言实现,下面以JAVA编程语言为例,介绍守护进程模块的实现方法。所述守护进程模块的实现方法如下
首先定义守护进程模块中用于接收和存储客户注册信息的数据结构,具体的JAVA代码为
Struct client—register
{
String registerName;
Unsigned int registerID; // 守护进程分配
。。。。。。。。。Il其他数据成员
List〈struct server*〉IistServer; // 客户所注册的服务链表 List〈struct signal*〉IistSignal; //客户所注册的需要响应的广播消息链表
};
Struct daemon_regi ster
{
String version;// 当前版本
Unsigned int startTime; //守护进程启动时间
Unsigned int clientNum; //当前注册的用户数
Unsigned int signalNum; //当前注册的系统广播消息数
List<struct client_register*> IistClient; // 当前客户注册信息链表
............Il其他数据成员
}
然后定义守护进程模块中的各个基本接口,包括客户信息注册接口、广播消息注册接口、广播消息发送接口、消息请求接口、消息接收接口、消息发送接口,用于监控、转发和响应客户的服务请求信息,或者根据客户的注册信息直接为客户发送客户所需要的广播消息。所述的各个接口的定义方法如下
Int register(const char* pRegisterName)
功能客户信息注册
参数const char* pRegisterName 表不注册名 返回值0表示成功,大于O表示错误码;
Int register_signal(const char* pRegisterName)
功能广播消息注册
参数const char* pRegisterName表不广播消息名 返回值0表示成功,大于O表示错误码;
Int register_call(const char* pRegisterName)
功能消息请求
参数const char* pRegisterName 表不消息名 返回值0表示成功,大于O表示错误码;
Int message_receive(MESSAGE* pMsg)
功能消息接收
参数MESSAGE* pMsg表示接收到的消息 返回值0表示成功,大于O表示错误码;
Void signal_send(MESSAGE* pMsg)功能广播消息发送
参数MESSAGE* pMsg表示要发生的广播消息 返回值无;
MESSAGE* call_send(MESSAGE* pMsg)
功能消息发送
参数MESSAGE* pMsg表示要发送的消息 返回值返回的处理结果;
以上详细介绍了本发明的守护进程模块的数据结构和接口定义,通过守护进程模块,无论客户A和客户进程B可以进行通信,也就是说客户A的进程与客户进程B的进程可以直接进行操作系统无关的通信。数据结构是软件中的一个术语;守护进程模块的数据结构定义是其功能实现的关键。图3所示是本发明的守护进程模块在客户A注册连接以后监视通信需求的方法流程图;在客户A注册完成后,守护进程模块通过套接字监视并等待连接,反复判断是否有新的客户请求,有则创建新的线程,并通过守护进程模块处理该新的线程。图4所示是本发明的守护进程模块处理用户的注册请求的线程的流程图;守护进程模块监控到有一个客户发出注册请求后,会创建一个新的线程,同时所述套接字继续监控其他客户发出的注册请求。所述新的线程被创建后,首先检查所述客户A注册的客户名称是否存在,若已存在则向所述客户A返回注册失败的信息,否则将客户A的注册信息添加到数据库中,同时更新相关的注册数据并返回注册成功。本发明实施例中,数据库可以用结构链表来实现,例如,客户注册的服务(即客户自身可提供的服务)可以保存在服务链表中,客户所要相应的广播消息则保存在广播消息链表中。图5所示是本发明的守护进程模块处理用户的服务请求的方法流程图。客户A向 所述守护进程模块发出服务请求,要求返回客户B提供的一个或多个服务。所述守护进程模块首先检查客户B是否存在,不存在,则返回失败信息。然后再检查客户B是否存在这种服务,不存在则返回失败信息。所述守护进程模块收到所述客户A发出的服务请求后,向所述客户B转发所述客户A发出的服务请求。所述客户B处理所述客户A发出的服务请求,并将处理结果返回给所述守护进程模块。如果所述客户B无需处理所述客户A的服务请求,则流程结束。所述守护进程模块将所述客户B的处理结果返回给所述客户A。如图6所示是本发明的应用软件的进程间通信系统的方框图。包括如下步骤
守护进程模块启动并建立一个套接字,用于监控和等待客户的注册请求和服务请求。客户A向所述守护进程模块发出注册请求,请求中包含客户的注册信息。所述守护进程模块监控到客户A的注册请求后,将所述客户A的注册信息保存到数据库中并返回注册成功的消息。客户A向所述守护进程模块发出服务请求,要求返回客户B提供的一个或多个服务。所述守护进程模块收到所述客户A发出的服务请求后,向所述客户B转发所述客户A发出的服务请求。所述客户B处理所述客户A发出的服务请求,并将处理结果返回给所述守护进程模块
所述守护进程模块将所述客户B的处理结果返回给所述客户A。综上所述,本发明通过定义一个守护进程模块,可以为位于不同操作系统的客户建立通信连接,也就是说不同客户的进程间可以进行操作系统无关的通信,从而技术人员在开发通信类项目时,不必 为每种操作系统开发一套代码,可以减少代码的复杂度,降低开发和维护成本。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种应用软件的进程间通信方法,用于客户进程A和客户进程B之间的通信,或者客户进程A和客户进程B分别要响应的广播服务;其特征在于包括以下步骤 步骤A :客户进程A向守护进程模块发出服务请求,要求返回客户进程B提供的一个或多个服务; 步骤B :所述守护进程模块收到所述客户进程A发出的服务请求后,转发给所述客户进程B ; 步骤C :所述客户进程B接收并处理所述客户进程A的服务请求,并将处理结果返回给所述守护进程模块; 步骤D :所述守护进程模块将所述客户进程B的处理结果返回给所述客户进程A。
2.根据权利要求I所述的操作系统无关的进程间通信方法,其特征在于,在所述步骤A之前还包括以下步骤 所述守护进程模块启动并建立一个套接字,用于监控和等待客户的注册请求和服务请求; 所述客户进程A向所述守护进程模块发出注册请求,请求中包含客户的注册信息; 所述守护进程模块监控到客户进程A的注册请求后,将所述客户进程A的注册信息保存到数据库中并返回注册成功的消息。
3.根据权利要求2所述的操作系统无关的进程间通信方法,其特征在于所述注册信息中包括客户名称、客户提供的服务及客户所要响应的广播消息。
4.根据权利要求2所述的操作系统无关的进程间通信方法,其特征在于所述守护进程模块监控到客户进程A的注册请求后,首先检查所述客户进程A注册的客户名称是否存在,若已存在则向所述客户进程A返回注册失败的信息。
5.根据权利要求I所述的操作系统无关的进程间通信方法,其特征在于在所述步骤B中,所述守护进程模块收到所述客户进程A发出的服务请求后,首先检查数据中是否存在客户进程B的注册信息,若不存在则向所述客户进程A返回服务请求失败的信息,否则进入以下步骤 进一步检查客户进程B的注册信息中是否存在所述客户进程A请求的服务,若存在则将所述客户进程A发出的服务请求转发给所述客户进程B,否则向所述客户进程A返回服务请求失败的息。
6.一种应用软件的进程间通信系统,其特征在于包括守护进程模块,用于接收客户的注册信息,监控、转发和响应客户的服务请求信息;所述守护进程模块进一步包括 服务请求接收模块,用于接收客户发出的一个或多个服务请求; 服务请求转发模块,用于将所述客户发出的一个或多个服务请求转发给服务提供者; 服务结果接收模块,用于接收所述服务提供者提供的服务响应结果; 服务结果返回模块,用于将所述服务提供者提供的服务响应结果返回给所述客户; 所述服务请求模块、所述服务请求转发模块和所述服务请求者顺序连接,所述服务请求者还与所述服务结果接收模块、所述服务结果返回模块顺序连接。
7.根据权利要求6所述的进程间通信系统,其特征在于所述守护进程模块还包括 套接字模块,用于监控和等待客户发出的注册请求和服务请求; 注册请求接收模块,用于接收客户发出的注册请求。
8.根据权利要求7所述的进程间通信系统,其特征在于所述守护进程模块还包括 注册信息处理模块,用于检查客户注册的客户名称是否存在,若存在则向所述客户返回注册失败的信息,否则保存所述客户的注册信息并返回注册成功的消息。
9.根据权利要求6至8任一项所述的进程间通信系统,其特征在于所述守护进程模块还包括 服务请求检查模块,用于检查数据库中是否存在客户所指定的服务提供者及服务内容。
全文摘要
本发明涉及一种应用软件的进程间通信方法和系统,所述方法包括通过守护进程模块接收客户的注册信息,监控、转发和响应客户的服务请求信息,包括以下步骤客户A向所述守护进程模块发出服务请求,要求返回客户B提供的一个或多个服务;所述守护进程模块收到所述客户A发出的服务请求后,向所述客户B转发所述客户A的服务请求;所述客户B处理所述客户A的服务请求,并将处理结果返回给所述守护进程模块;所述守护进程模块将所述客户B的处理结果返回给所述客户A。本发明的进程间通信与操作系统无关,同样的软件可以运行于不同的操作系统,有助于技术人员加快软件项目的开发,减少软件的开发和维护成本。
文档编号H04L12/18GK102833080SQ20111016028
公开日2012年12月19日 申请日期2011年6月15日 优先权日2011年6月15日
发明者郭欣阳 申请人:康佳集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1