一种实现进程间数据交换的方法及装置制造方法及图纸

技术编号:11479193 阅读:82 留言:0更新日期:2015-05-20 10:17
一种实现进程间数据交换的方法,包括:将CFMessagePort封装出服务端接口和客户端接口,服务端进程通过该服务端接口与该CFMessagePort建立服务,客户端进程调用该客户端接口向该服务端进程发送数据处理请求,其中包含所请求的服务端进程的名称,该CFMessagePort根据该服务端进程的名称,在该客户端进程和该服务端进程之间建立连接,将该客户端进程发送的请求处理的数据,转发给该服务端进程进行处理,并将处理后的数据转发给该客户端进程。上述实现进程间数据交换的方法及装置,可提高数据处理速度。

【技术实现步骤摘要】
一种实现进程间数据交换的方法及装置
本专利技术涉及通信
,尤其涉及一种实现进程间数据交换的方法及装置。
技术介绍
IOS系统为了保证程序有足够的资源来运行的更加稳定、流畅,对程序的运行做了很多的限制,例如不能在后台运行非系统级别的程序,程序切换到后台会在很短时间后被系统挂起停止运行。程序之间不能相互访问资源,因此不能进行程序(或进程)间数据交换。现有技术中,主要采用socket方式来进行数据交换,socket用于描述IP地址和端口,是一个通信链的句柄。Socket正如其英文原意“插座”那样,象一个多孔插座。主机一般运行多个服务软件,同时提供几种服务,每种服务都打开一个Socket并绑定到一个端口上,不同的端口对应于不同的服务。两个进程之间进行数据交换时,需要该两个进程中一方作为服务端(server)建立起来,另一方则作为客户端(client)连接到服务端给定的接口后就可以进行数据交换。但是在上述现有技术中,存在下述缺陷:由于需要事先获知服务端进程提供的端口,同时还存在端口被其他进程中的服务端方占用的风险,因此需要在服务端采用动态端口的方式,这就需要借助其他方式将端口通知客户端进程。服务端进程或者客户端进程之间的连接不稳定导致socket连接断开或者发送数据超时,则需要重新连接服务端进程和客户端进程,或者重新发送数据,因此进程间建立和维护socket连接比较繁琐。另外,由于需要事先在进程之间建立服务端和客户端连接,只适合服务端和客户端一对一连接的“星状”的程序架构方式,应用范围窄,并且,对于多个进程之间交互连接的网状连接方式进行数据交换时,则需要在每个进程内部都各自建立一个服务端接口和客户端接口才能满足需要,这样服务端进程和客户端进程之间的数据交换维护起来更加的困难和繁杂,同时对于使用不是很频繁、对数据的实时性要求很高的需求,采用socket方式来实现会大部分时间段无效的占用了系统资源。
技术实现思路
有鉴于此,本专利技术提供一种实现进程间数据交换的方法及装置,用于提高进程间处理并交换数据的效率。本专利技术实施例提供的实现进程间数据交换的方法,包括:将CFMessagePort进行封装,使得所述CFMessagePort同时为进程提供服务端接口和客户端接口;服务端进程通过所述服务端接口与所述CFMessagePort建立服务;客户端进程调用所述客户端接口向所述服务端进程发送数据处理请求,所述数据处理请求中包含所请求的所述服务端进程的名称;所述CFMessagePort根据所述服务端进程的名称,在所述客户端进程和所述服务端进程之间建立连接,将所述客户端进程发送的请求处理的数据,转发给所述服务端进程进行处理,并将处理后的数据转发给所述客户端进程。本专利技术实施例提供的实现进程间数据交换的装置,包括:封装单元,用于将CFMessagePort进行封装,使得所述CFMessagePort同时为进程提供服务端接口和客户端接口;第一建立单元,用于服务端进程通过所述封装单元封装得到的所述服务端接口与所述CFMessagePort建立服务;发送单元,用于客户端进程调用所述封装单元封装得到的所述客户端接口向所述服务端进程发送数据处理请求,所述数据处理请求中包含所请求的所述服务端进程的名称;第二建立单元,用于所述CFMessagePort根据所述发送单元发送的所述服务端进程的名称,在所述客户端进程和所述服务端进程之间建立连接;所述发送单元,还用于将所述客户端进程发送的请求处理的数据,转发给所述服务端进程进行处理,并将处理后的数据转发给所述客户端进程。本专利技术实施例提供的实现进程间数据交换的方法及装置,将CFMessagePort进行封装,使得该CFMessagePort同时为进程提供服务端接口和客户端接口,客户端进程调用该客户端接口向该服务端进程发送数据处理请求,CFMessagePort根据该数据处理请求中包含的服务端进程的名称,在该客户端进程和该服务端进程之间建立连接,将该客户端进程发送的请求处理的数据,转发给该服务端进程进行处理,并将处理后的数据转发给该客户端进程,至此完成客户端进程与服务端进程之间数据的交换,加快数据交换速度,提高数据交换效率,并且,由于采用上述方式可根据客户端进程的名称在服务端进程和客户端进程间简单、快速地建立连接,不仅适合于进程间一对一连接的“星状”的程序结构,还适合多进程之间交互连接的“网状”的程序结构,对于在“网状”结构中进行数据交换时,则不需要在每个进程内部都建立服务端接口和客户端接口,维护更加的简便,更有效的利用系统资源。为让本专利技术的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。附图说明图1为本专利技术实施例中实现进程间数据交换的方法的一个实施例示意图;图2为本专利技术实施例中进程间通过CFMessagePort的接口进行数据交换的示意图;图3为本专利技术实施例中实现进程间数据交换的方法的另一个实施例示意图;图4为本专利技术实施例中实现进程间数据交换的装置的一个实施例示意图;图5为本专利技术实施例中实现进程间数据交换的装置的另一个实施例示意图。具体实施方式为更进一步阐述本专利技术为实现预定专利技术目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本专利技术的具体实施方式、结构、特征及其功效,详细说明如后。本专利技术实施例所提供的实现进程间数据交换的方法,可以提高进程间数据交换的效率。请参阅图1,本专利技术实施例中的实现进程间数据交换的方法的一个实施例包括:101、将CFMessagePort进行封装,使得该CFMessagePort同时为进程提供服务端接口和客户端接口;系统中的networkengine(网络引擎)模块将CFMessagePort进行封装,使得该CFMessagePort同时为进程提供服务端(server)接口和客户端(client)接口,请参阅图2,服务端(server)进程启动后,调用服务端接口建立服务,而客户端(client)进程在发送数据请求时,调用对应的客户端接口即可,这样便于进程能够更加方便的使用CFMessagePort进行数据交换。需要说明的是,包括本实施例在内的各实施例中,在数据交换过程中,将作为服务端的进程称为服务端进程,将作为客户端的进程的称为客户端进程。102、服务端进程通过该服务端接口与该CFMessagePort建立服务;服务端进程运行,并通过该CFMessagePort的该服务端接口与该CFMessagePort建立服务。103、客户端进程调用该客户端接口向该服务端进程发送数据处理请求,该数据处理请求中包含所请求的该服务端进程的名称;客户端进程调用该CFMessagePort的该客户端接口,向该服务端进程发送数据处理请求,请求该服务端进程处理该客户端进程发送的数据,在该数据处理请求中包含所请求的该服务端进程的名称,该服务端进程的名称可以由服务端进程和客户端进程事先约定。本实施例中,客户端进程只需得知所请求处理数据的服务端进程的名称,即可调用CFMessagePort的客户端接口向该服务端进程发送数据处理请求。104、该CFMessagePort根据该服务端进程的名称,在该客户端进程和该服务端进程之间建立连接,将该客户端进程发送的本文档来自技高网
...

【技术保护点】
一种实现进程间数据交换的方法,其特征在于,包括:将CFMessagePort进行封装,使得所述CFMessagePort同时为进程提供服务端接口和客户端接口;服务端进程通过所述服务端接口与所述CFMessagePort建立服务;客户端进程调用所述客户端接口向所述服务端进程发送数据处理请求,所述数据处理请求中包含所请求的所述服务端进程的名称;所述CFMessagePort根据所述服务端进程的名称,在所述客户端进程和所述服务端进程之间建立连接,将所述客户端进程发送的请求处理的数据,转发给所述服务端进程进行处理,并将处理后的数据转发给所述客户端进程。

【技术特征摘要】
1.一种实现进程间数据交换的方法,其特征在于,包括:将CFMessagePort进行封装,使得所述CFMessagePort同时为进程提供服务端接口和客户端接口,所述客户端接口具备判断服务端进程是否有效的功能;服务端进程通过所述服务端接口与所述CFMessagePort建立服务;客户端进程通过所述客户端接口判断所述服务端进程是否存在并有效运行;若所述服务端进程已运行,则调用所述客户端接口向所述服务端进程发送数据处理请求,所述数据处理请求中包含所请求的所述服务端进程的名称;若所述服务端进程不存在或无效,则结束进程;所述CFMessagePort根据所述服务端进程的名称,在所述客户端进程和所述服务端进程之间建立连接,将所述客户端进程发送的请求处理的数据,转发给所述服务端进程进行处理,并将处理后的数据转发给所述客户端进程。2.根据权利要求1所述的方法,其特征在于,所述将处理后的数据转发给所述客户端进程之后包括:断开所述客户端进程和所述服务端进程之间的连接。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述客户端进程通过所述客户端接口发送同步数据处理请求或异步数据处理请求。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述客户端进程向所述服务端进程发送数据处理请求失败,则所述客户端进程调用给定的接口向对应的应用层发送通知,以通知所述应用层判断是否需要重发所述数据处理请求。5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:在发送数据时,所述客户端进程通过所述客户端接口注册回调接口;当接收到所述服务端进程处理后的数据时,则根据所述回调接口将接收到数据发送给应用层进行处理。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:所述服务端进程通过所述服务端接口监听所述客户端进程发送的注册消息;若所述注册消息已被注册,则调用注册所述注册消息的客户端进程注册的回调接口进行数据处理;将处理后的数据通过所述服务端接口发送给客户端进程。7.一种实现进程间数据交换的装置,其特征在于,包括:封装单元,用于将CFMessagePort进行封装,使得所述CFMessag...

【专利技术属性】
技术研发人员:叶礼伟罗程李斌
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1