发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供进程间通信方法、装置及电子设备,用于解决现有技术中由于不同操作系统间代码差异而造成进程间通讯繁琐的问题。
为实现上述目的及其他相关目的,本发明提供一种进程间通信方法,包括:在一或多个操作系统中,对应每个需通信的进程注册虚拟IP地址;在各所述进程运行的操作系统中预设的域名映射文件中建立和/或更新所述虚拟IP地址及其关联的域名,所述域名与进程名称相关联;为所述虚拟IP地址注册消息接口;在根据进程名称进行进程间通信时,解析与参与通信的进程的进程名称关联的域名以获取对应虚拟IP地址;将所述消息发送至所获取的虚拟IP地址的消息接口以供处理。
于本发明的一实施例中,所述在一或多个操作系统中,对应每个需通信的进程注册虚拟IP地址,包括:检测所注册的IP地址是否与已注册IP地址重复;若是,则重新注册IP地址。
于本发明的一实施例中,所述消息接口持续或周期性监听消息,所述方法包括:在所述处理消息后,判断对应进程是否结束;若未结束,则令所述消息接口继续监听消息;若结束,则令所述消息接口停止监听消息。
于本发明的一实施例中,所述操作系统包括Linux/Unix或Windows,所述域名映射文件为所述操作系统中的hosts文件。
于本发明的一实施例中,所述消息接口包括套接字Socket。
为实现上述目的及其他相关目的,本发明提供一种进程间通信装置,包括:地址注册模块,用于在一或多个操作系统中,对应每个需通信的进程注册虚拟IP地址;关联模块,用于在各所述进程运行的操作系统中预设的域名映射文件中建立和/或更新所述虚拟IP地址及其关联的域名,其中,所述域名与进程名称相关联;接口注册模块,用于为所述虚拟IP地址注册消息接口;解析模块,用于在根据进程名称进行进程间通信时,解析与参与通信的进程的进程名称关联的域名以获取对应虚拟IP地址;消息传输模块,用于将所述消息发送至所获取的虚拟IP地址的消息接口以供处理。
于本发明的一实施例中,所述地址注册模块包括:地址重复检测模块,用于检测所注册的IP地址是否与已注册IP地址重复;若是,则重新注册IP地址。
于本发明的一实施例中,所述消息接口持续或周期性监听消息;所述装置包括:消息接口管理模块,用于在所述处理消息后,判断对应进程是否结束;若未结束,则令所述消息接口继续监听消息;若结束,则令所述消息接口停止监听消息。
于本发明的一实施例中,所述操作系统包括Linux/Unix或Windows,所述域名映射文件为所述操作系统中的hosts文件。
于本发明的一实施例中,所述消息接口包括套接字Socket。
为实现上述目的及其他相关目的,本发明提供一种电子设备,运行有一或多个操作系统,且应用所述的进程间通信装置。
如上所述,本发明的进程间通信方法、装置及电子设备,在一或多个操作系统中,对应每个需通信的进程注册虚拟IP地址;在各所述进程运行的操作系统中预设的域名映射文件中建立和/或更新所述虚拟IP地址及其关联的域名,所述域名与进程名称相关联;为所述虚拟IP地址注册消息接口;在根据进程名称进行进程间通信时,解析与参与通信的进程的进程名称关联的域名以获取对应虚拟IP地址;将所述消息发送至所获取的虚拟IP地址的消息接口以供处理;通过本发明的技术方案实现通过各种操作系统间通用的域名及IP地址即可完成进程间消息的传递,解决现有技术的问题,方便,灵活,可以方便地移植到不同的操作系统,且很容易支持分布式部署。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本发明的技术方案应用于进程间通讯,所谓进程,进程(Process)是计算机中的应用程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,应用程序通过进程活动实现功能。
于本发明的一实施例中,本发明提供一种进程间通信方法,包括:在一或多个操作系统中,对应每个需通信的进程注册虚拟IP地址;在各所述进程运行的操作系统中预设的域名映射文件中建立和/或更新所述虚拟IP地址及其关联的域名,所述域名与进程名称相关联;为所述虚拟IP地址注册消息接口;在根据进程名称进行进程间通信时,解析与参与通信的进程的进程名称关联的域名以获取对应虚拟IP地址;将所述消息发送至所获取的虚拟IP地址的消息接口以供处理。
以下结合图示进行具体说明:
请参阅图1,本发明提供一种进程间通信方法,包括:
步骤S101:在一或多个操作系统中,对应每个需通信的进程注册虚拟IP地址。
于本发明的一实施例中,现有操作系统,如Windows或Linux/Unix等,都支持虚拟IP地址的注册,可通过调用操作系统的系统调用函数注册虚拟IP地址,注册虚拟IP地址时,如果该虚拟IP地址已经被注册,则会调用失败,则需要更换一个IP地址重新注册,从而避免了有重复的虚拟IP地址而造成冲突。
步骤S102:在各所述进程运行的操作系统中预设的域名映射文件中建立和/或更新所述虚拟IP地址及其关联的域名,所述域名与进程名称相关联。
于本发明的一实施例中,所述操作系统包括Linux/Unix或Windows,所述域名映射文件为所述操作系统中的hosts文件。
具体来说,操作系统的hosts文件是用于指明IP地址和域名间的映射关系,由于进程注册的IP地址是会发生变化的,因此程序里不能通过写入固定的IP和其它进程进行通信,写入域名会比较的方便,如果IP地址变化了,只需要更新hosts文件中该域名对应的IP地址即可,典型的hosts文件中内容的写法是:Process1name10.1.1.2,Prosess2name10.1.1.3,其中,Process1name和Process2name是域名且与对应的两个进程的进程名称相同,其IP地址分别是10.1.1.2和10.1.1.3,也就是说,所述域名和进程名称对应指的是:可以相同,也可以是具有预设的关联关系。
进一步优选的,在其他实施例中,亦可将进程通信时所使用的通信端口与该虚拟IP地址一起绑定。
步骤S103:为所述虚拟IP地址注册消息接口。
于本发明的一实施例中,所述消息接口即为Socket(套接字),且通过所述注册将所分配的虚拟IP地址和Socket接口绑定,Socket则可用于进程间消息通信,此处不作赘述。
步骤S104:在根据进程名称进行进程间通信时,解析与参与通信的进程的进程名称关联的域名以获取对应虚拟IP地址。
于本发明的一实施例中,在有消息需要传送给一个进程时,可以根据解析该进程的进程名称对应域名,进而通过例如Unix/Linux中的gethostsbyname系统函数,在hosts文件中得到该域名所对应的虚拟IP地址,然后将将所需要发送的消息发送给对应的进程。
步骤S105:将所述消息发送至所获取的虚拟IP地址的消息接口以供处理。
于本发明的一实施例中,通过前述对应虚拟IP地址注册的消息接口Socket,然后即可进行消息处理。
于本发明的一实施例中,优选的,所述消息接口持续或周期性监听消息,而为了在进程结束后停止接口工作以释放资源,所述方法还可包括:
在所述处理消息后,判断对应进程是否结束;
若未结束,则令所述消息接口继续监听消息;
若结束,则令所述消息接口停止监听消息。
综上,通过以上方式,可以通过虚拟IP地址的方式有效地完成进程间通信,发送消息时直接通过域名发送即可;本方案中通过虚拟IP地址的方式,还可以方便地支持远程进程间通信,即在相同信息的两个进程运行在相同/不同的电子设备上和/或不同的操作系统中的情况下,均能非常方便地完成通信。
与上述方法对应的是,本发明还可提供一种进程间通信装置,包括:地址注册模块,用于在一或多个操作系统中,对应每个需通信的进程注册虚拟IP地址;关联模块,用于在各所述进程运行的操作系统中预设的域名映射文件中建立和/或更新所述虚拟IP地址及其关联的域名,其中,所述域名与进程名称相关联;接口注册模块,用于为所述虚拟IP地址注册消息接口;解析模块,用于在根据进程名称进行进程间通信时,解析与参与通信的进程的进程名称关联的域名以获取对应虚拟IP地址;消息传输模块,用于将所述消息发送至所获取的虚拟IP地址的消息接口以供处理。
以下通过图示进行具体说明,由于所述装置实施例与前述方法实施例的原理大致相同,因此实施例间可通用的技术特征不再重复赘述。
如图2所示,本发明提供一种进程间通信装置200,包括:地址注册模块201,用于在一或多个操作系统中,对应每个需通信的进程注册虚拟IP地址;关联模块202,用于在各所述进程运行的操作系统中预设的域名映射文件中建立和/或更新所述虚拟IP地址及其关联的域名,其中,所述域名与进程名称相关联;接口注册模块203,用于为所述虚拟IP地址注册消息接口;解析模块204,用于在根据进程名称进行进程间通信时,解析与参与通信的进程的进程名称关联的域名以获取对应虚拟IP地址;消息传输模块205,用于将所述消息发送至所获取的虚拟IP地址的消息接口以供处理。
于本发明的一实施例中,所述地址注册模块包括:地址重复检测模块,用于检测所注册的IP地址是否与已注册IP地址重复;若是,则重新注册IP地址。
于本发明的一实施例中,所述消息接口持续或周期性监听消息;所述装置包括:消息接口管理模块,用于在所述处理消息后,判断对应进程是否结束;若未结束,则令所述消息接口继续监听消息;若结束,则令所述消息接口停止监听消息。
于本发明的一实施例中,所述操作系统包括Linux/Unix或Windows,所述域名映射文件为所述操作系统中的hosts文件。
于本发明的一实施例中,所述消息接口包括套接字Socket。
如图3所示,本发明提供一种电子设备300,运行有一或多个操作系统,且应用所述的进程间通信装置301,所述进程间通信装置301可以通过软件程序实现,其功能与前述实施例相同,不作赘述。
于本发明的一实施例中,所述电子设备300例如为智能手机、平板电脑、电脑等,运行例如Windows或Unix/Linux操作系统,举例来说,一个电子设备可通过虚拟机的方式运行多个操作系统,则本发明的技术方案可以实现该电子设备上不同虚拟机所运行进程间的通信,进一步具体的,其中一个虚拟机可以是Windowsxp,另一个是Windows7等,属于同一类型的操作系统,或者,其中一个虚拟机是Windows7操作系统,另一个是Linux操作系统等皆可。
并且,在多个电子设备300间亦可实现进行通信,比如一个Window7的操作系统电脑和一个安卓操作系统的智能手机间的进程通信等。
当然,还有很多本发明技术方案可应用的场景,不一一列举,此处是为了说明本发明利用操作系统间的共性特点进行进程通讯机制改进,良好解决现有技术中不同操作系统间进程通信过程繁琐的问题,本发明技术方案的应用可以非常广泛。
综上所述,本发明的进程间通信方法、装置及电子设备,在一或多个操作系统中,对应每个需通信的进程注册虚拟IP地址;在各所述进程运行的操作系统中预设的域名映射文件中建立和/或更新所述虚拟IP地址及其关联的域名,所述域名与进程名称相关联;为所述虚拟IP地址注册消息接口;在根据进程名称进行进程间通信时,解析与参与通信的进程的进程名称关联的域名以获取对应虚拟IP地址;将所述消息发送至所获取的虚拟IP地址的消息接口以供处理;通过本发明的技术方案实现通过各种操作系统间通用的域名及IP地址即可完成进程间消息的传递,解决现有技术的问题,方便,灵活,可以方便地移植到不同的操作系统,且很容易支持分布式部署。
本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。