CN102890644A - 一种基于字节流的进程间通讯方法 - Google Patents
一种基于字节流的进程间通讯方法 Download PDFInfo
- Publication number
- CN102890644A CN102890644A CN2011102027518A CN201110202751A CN102890644A CN 102890644 A CN102890644 A CN 102890644A CN 2011102027518 A CN2011102027518 A CN 2011102027518A CN 201110202751 A CN201110202751 A CN 201110202751A CN 102890644 A CN102890644 A CN 102890644A
- Authority
- CN
- China
- Prior art keywords
- information
- packets
- server
- client
- byte
- 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
Landscapes
- Computer And Data Communications (AREA)
Abstract
一种基于字节流的进程间通讯方法,将系统中的核心进程创建为UnixSocket的服务器端,用于总体接收、协调、发送系统中各个进程产生的通信需求;将系统中的单个子进程创建为UnixSocket的客户端;所述的客户端作为发送进程时,首先对待发送的信息包进行字节化处理,然后通过和服务器建立的链接将信息包推送到核心进程;由核心进程根据信息字节流的字节长度、信息目的及信息体,将该信息包发送至目的进程中。本发明实现了消息的集中管理。另外,过程中对于不同的进程可能存在的状态有:就绪、死亡、等待等不同的运行状态。服务器对暂时不能送达的消息进行保存,等待客户端进入运行状态后将信息进行推送,实现了离线信息保存的功能。
Description
技术领域
本发明涉及一种多进程间的通信技术。
背景技术
目前,Socket通讯技术在Linux中得到最广泛的应用。原有的IPC通讯技术在很大程度上逐渐退出开发舞台,尤其是Java技术的兴起更使的情况更为微妙。使得Socket优势逐步凸显,占据整个软件开发应用领域的绝对主流地位。其设计和应用思想,更加符合人们的开发习惯。
另外基于系统自身的Unix Socket通讯更是得到了最广泛的认可。主流的数据库、图形界面等都基于这种途径进行使用。
发明内容
本发明的目的在于:A:实现基于Unix Socket的多进程通讯,实现关联进程间的信息。B:实现所有消息的集中管理,即所有的消息都经过中心。中心对消息的最终目的进行选择,并对消息的类型进行过滤。C:实现消息的离线保存,当消息的接收方上线后再发送该消息给接收者。
为实现上述目的,本发明采用以下技术方案:
本发明将系统中的核心进程创建为Unix Socket的服务器端,用于总体接收、协调、发送系统中各个进程产生的通信需求;将系统中的单个子进程创建为Unix Socket的客户端;所述的客户端作为发送进程时,首先对待发送的信息包进行字节化处理,然后通过和服务器建立的链接将信息包推送到核心进程;由核心进程根据信息字节流的字节长度、信息目的及信息体,将该信息包发送至目的进程中。
所述的目的进程接收到信息包后,首先判断是否属于自己的信息包;若属于该目的进程的信息包,则发送回复信息,所述的回复信息先通过字节化处理后被推送到核心进程,再由核心进程转发给发送进程;若不属于该目的进程的信息包,则将该信息包推送给服务器。
所述发送进程将信息包推送给服务器后,服务器搜索不到该信息包的目的进程时,服务器对该信息包进行保存;直至服务器搜索到目的进程后,将该信息包推送下去。
服务器搜索超时后,服务器仍然搜索不到信息包的目的进程,则抛弃该信息包。
采用上述技术方案的本发明,将系统中的核心进程创建为Unix Socket的服务器端,将系统中的单个子进程创建为Unix Socket的客户端,由服务器端实现对客户端信息接收和对目的Client信息的发送。其中反向的客户端对处理结果的返回使用同样流程,从而实现了消息的集中管理。另外,过程中对于不同的进程可能存在的状态有:就绪、死亡、等待等不同的运行状态。服务器对暂时不能送达的消息进行保存,等待客户端进入运行状态后将信息进行推送,实现了离线信息保存的功能。
附图说明
图1为本发明的通信流程图。
具体实施方式
本发明的核心思想在于:将系统中的核心进程创建为Unix Socket的服务器端,用于总体接收、协调、发送系统中各个进程产生的通信需求;将系统中的单个子进程创建为Unix Socket的客户端。客户端作为发送进程时,首先对待发送的信息包进行字节化处理,然后通过和服务器建立的链接将信息包推送到核心进程;由核心进程根据信息字节流的字节长度、信息目的及信息体,将该信息包发送至目的进程中。
如图1所示,本发明主要分为一下几大部分:通讯的建立、消息的组织与发送、服务端消息接收分析与转发、服务端消息的保存、客户端消息的接收。
通讯的建立:服务器端绑定建立一个以sock path标识的Unix Socket的服务端,客户端建立这个Unix Socket的客户端。客户端接入服务端,完成通讯的建立服务器为接入的客户端分配唯一的id。客户端在和服务断开连接后,客户端接入的这个过程需要重新进行。同样服务在异常后也需要重新进行服务的这个流程。
消息的组织与发送:发送进程将待发送的消息打上标签,然后附上消息内容。即在消息的头部增加消息的目的id、接收id,协议的版本、类型及数据长度。因为整体的消息是按照字节流发送的,所以必须要有数据长度。其中,使用的id为客户端接入服务时分配的id。
服务端消息接收分析与转发:服务端接收到消息后,首先根据数据长度获取完整的通讯消息。然后根据消息的类型识别消息的处理流程。最好根据目的id判断该消息是否进入保存流程或者直接进行发送。
服务端消息的保存:服务端在进行数据发送前,先根据通讯消息携带的目的id搜索该消息的目的进程。如果找不到目的进程,或者目的进程不在线,就认为这是一条需要保存的消息,等待该目的进程的设备上线后将该消息推送下去。如果超时后该目的进程还没有上线,就抛弃该消息。消息的最大保留条目为10Byte或者1KB内容。
客户端消息的接收:目的进程根据通讯消息的长度,对消息进行完整接收后。对目的id进行比对,如果是自己的消息就处理。如果非自己的消息重新将消息推送会服务器端。
Claims (4)
1.一种基于字节流的进程间通讯方法,其特征在于:将系统中的核心进程创建为Unix Socket的服务器端,用于总体接收、协调、发送系统中各个进程产生的通信需求;将系统中的单个子进程创建为Unix Socket的客户端;所述的客户端作为发送进程时,首先对待发送的信息包进行字节化处理,然后通过和服务器建立的链接将信息包推送到核心进程;由核心进程根据信息字节流的字节长度、信息目的及信息体,将该信息包发送至目的进程中。
2.根据权利要求1所述的基于字节流的进程间通讯方法,其特征在于:所述的目的进程接收到信息包后,首先判断是否属于自己的信息包;若属于该目的进程的信息包,则发送回复信息,所述的回复信息先通过字节化处理后被推送到核心进程,再由核心进程转发给发送进程;若不属于该目的进程的信息包,则将该信息包推送给服务器。
3.根据权利要求1所述的基于字节流的进程间通讯方法,其特征在于:所述发送进程将信息包推送给服务器后,服务器搜索不到该信息包的目的进程时,服务器对该信息包进行保存;直至服务器搜索到目的进程后,将该信息包推送下去。
4.根据权利要求3所述的基于字节流的进程间通讯方法,其特征在于:服务器搜索超时后,服务器仍然搜索不到信息包的目的进程,则抛弃该信息包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110202751.8A CN102890644B (zh) | 2011-07-20 | 2011-07-20 | 一种基于字节流的进程间通讯方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110202751.8A CN102890644B (zh) | 2011-07-20 | 2011-07-20 | 一种基于字节流的进程间通讯方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102890644A true CN102890644A (zh) | 2013-01-23 |
CN102890644B CN102890644B (zh) | 2015-01-14 |
Family
ID=47534152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110202751.8A Active CN102890644B (zh) | 2011-07-20 | 2011-07-20 | 一种基于字节流的进程间通讯方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102890644B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648928A (zh) * | 2016-11-29 | 2017-05-10 | 成都广达新网科技股份有限公司 | 一种进程间通讯的方法及装置 |
CN106686056A (zh) * | 2016-11-25 | 2017-05-17 | 济南中维世纪科技有限公司 | 一种安卓客户端通信装置及与服务器进行连接通信的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731732A (zh) * | 2005-06-23 | 2006-02-08 | 复旦大学 | 实现视频质量与发送速率控制的高并发流媒体服务器系统 |
CN1928825A (zh) * | 2005-09-09 | 2007-03-14 | 腾讯科技(深圳)有限公司 | 一种服务器的实现方法以及服务器系统 |
CN101174225A (zh) * | 2006-11-02 | 2008-05-07 | 华为技术有限公司 | 一种实现消息通信的装置及方法 |
CN101321096A (zh) * | 2008-07-11 | 2008-12-10 | 北京立通无限科技有限公司 | 基于共享socket的通信处理方法及装置 |
CN101977195A (zh) * | 2010-10-29 | 2011-02-16 | 西安交通大学 | 一种基于共享内存机制虚拟机域间通信协议的实现方法 |
CN102035904A (zh) * | 2010-12-10 | 2011-04-27 | 北京中科大洋科技发展股份有限公司 | 一种将tcp网络通信服务端转换为客户端的方法 |
-
2011
- 2011-07-20 CN CN201110202751.8A patent/CN102890644B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731732A (zh) * | 2005-06-23 | 2006-02-08 | 复旦大学 | 实现视频质量与发送速率控制的高并发流媒体服务器系统 |
CN1928825A (zh) * | 2005-09-09 | 2007-03-14 | 腾讯科技(深圳)有限公司 | 一种服务器的实现方法以及服务器系统 |
CN101174225A (zh) * | 2006-11-02 | 2008-05-07 | 华为技术有限公司 | 一种实现消息通信的装置及方法 |
CN101321096A (zh) * | 2008-07-11 | 2008-12-10 | 北京立通无限科技有限公司 | 基于共享socket的通信处理方法及装置 |
CN101977195A (zh) * | 2010-10-29 | 2011-02-16 | 西安交通大学 | 一种基于共享内存机制虚拟机域间通信协议的实现方法 |
CN102035904A (zh) * | 2010-12-10 | 2011-04-27 | 北京中科大洋科技发展股份有限公司 | 一种将tcp网络通信服务端转换为客户端的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106686056A (zh) * | 2016-11-25 | 2017-05-17 | 济南中维世纪科技有限公司 | 一种安卓客户端通信装置及与服务器进行连接通信的方法 |
CN106648928A (zh) * | 2016-11-29 | 2017-05-10 | 成都广达新网科技股份有限公司 | 一种进程间通讯的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102890644B (zh) | 2015-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104391890B (zh) | 图片加载方法及系统 | |
CN102209076B (zh) | 服务端与客户端之间的交互方法和交互系统 | |
CN101138219B (zh) | 通过网络与客户机通信的方法和系统 | |
CN102394880B (zh) | 内容分发网络中的跳转响应处理方法和设备 | |
WO2007136665A3 (en) | Method and apparatus for controlling access to network resources based on reputation | |
WO2007005546A3 (en) | Method and apparatus for browsing network resources using an asynchronous communications protocol | |
WO2005109802A3 (en) | Multimedia access device and system employing the same | |
EP1335564A3 (en) | Communication system and communication method | |
CN102111437A (zh) | 一种基于soap扩展的web服务传输压缩方法 | |
CN103139253A (zh) | 实现网卡卸载功能的方法、网卡、主机系统及网络设备 | |
CN113259415B (zh) | 一种网络报文处理方法、装置及网络服务器 | |
RU2010146258A (ru) | Способ, устройство и система для распределения сообщений | |
CN103532828B (zh) | 一种基于扩展的xmpp协议的富文本格式实现系统和方法 | |
CN105357329B (zh) | 跨idc网络环境下业务数据的传输方法、装置及系统 | |
CN105635083A (zh) | 基于服务器和客户端架构的业务处理方法及业务处理系统 | |
CN1988543A (zh) | 报文类型识别方法及装置、报文首部压缩方法及系统 | |
CN102497297A (zh) | 基于多核多线程的深度报文检测技术的实现系统和方法 | |
CN103699450B (zh) | 一种Linux下的自适应组件间通信方法 | |
CN107368334B (zh) | 一种业务插件交互系统及方法 | |
CN102890644A (zh) | 一种基于字节流的进程间通讯方法 | |
WO2002065733A3 (en) | Method for requesting actions based on wireless telephony application(wta) | |
CN109787866A (zh) | 一种识别端口的方法及装置 | |
CN105472101B (zh) | 远程求助的方法、主控移动智能终端和受控移动智能终端 | |
EP1320240A3 (en) | Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism | |
CN107508787A (zh) | 一种任务执行方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |