CN102890644B - 一种基于字节流的进程间通讯方法 - Google Patents

一种基于字节流的进程间通讯方法 Download PDF

Info

Publication number
CN102890644B
CN102890644B CN201110202751.8A CN201110202751A CN102890644B CN 102890644 B CN102890644 B CN 102890644B CN 201110202751 A CN201110202751 A CN 201110202751A CN 102890644 B CN102890644 B CN 102890644B
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.)
Active
Application number
CN201110202751.8A
Other languages
English (en)
Other versions
CN102890644A (zh
Inventor
贾小波
严涛
惠作奎
李伟
陈启航
张晓飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZHENGZHOU VCOM TECHNOLOGY Co Ltd
Original Assignee
ZHENGZHOU VCOM TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZHENGZHOU VCOM TECHNOLOGY Co Ltd filed Critical ZHENGZHOU VCOM TECHNOLOGY Co Ltd
Priority to CN201110202751.8A priority Critical patent/CN102890644B/zh
Publication of CN102890644A publication Critical patent/CN102890644A/zh
Application granted granted Critical
Publication of CN102890644B publication Critical patent/CN102890644B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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 (3)

1.一种基于字节流的进程间通讯方法,其特征在于:将***中的核心进程创建为Unix Socket的服务器端,用于总体接收、协调、发送***中各个进程产生的通信需求;将***中的单个子进程创建为Unix Socket的客户端;所述的客户端作为发送进程时,首先对待发送的信息包进行字节化处理,然后通过和服务器端建立的链接将信息包推送到核心进程;由核心进程根据信息字节流的字节长度、信息目的及信息体,将该信息包发送至目的进程中;
所述发送进程将信息包推送给服务器端后,服务器端搜索不到该信息包的目的进程时,服务器端对该信息包进行保存;直至服务器端搜索到目的进程后,将该信息包推送下去。
2.根据权利要求1所述的基于字节流的进程间通讯方法,其特征在于:所述的目的进程接收到信息包后,首先判断是否属于自己的信息包;若属于该目的进程的信息包,则发送回复信息,所述的回复信息先通过字节化处理后被推送到核心进程,再由核心进程转发给发送进程;若不属于该目的进程的信息包,则将该信息包推送给服务器端。
3.根据权利要求1所述的基于字节流的进程间通讯方法,其特征在于:服务器端搜索超时后,服务器端仍然搜索不到信息包的目的进程,则抛弃该信息包。
CN201110202751.8A 2011-07-20 2011-07-20 一种基于字节流的进程间通讯方法 Active CN102890644B (zh)

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 CN102890644A (zh) 2013-01-23
CN102890644B true 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)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106686056A (zh) * 2016-11-25 2017-05-17 济南中维世纪科技有限公司 一种安卓客户端通信装置及与服务器进行连接通信的方法
CN106648928A (zh) * 2016-11-29 2017-05-10 成都广达新网科技股份有限公司 一种进程间通讯的方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
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网络通信服务端转换为客户端的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
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网络通信服务端转换为客户端的方法

Also Published As

Publication number Publication date
CN102890644A (zh) 2013-01-23

Similar Documents

Publication Publication Date Title
US20190004868A1 (en) System and method for distributed graphics processing unit (gpu) computation
CN103139253B (zh) 实现网卡卸载功能的方法、网卡、主机***及网络设备
CN104753752B (zh) 一种适用于vpn的按需连接方法
CN102316160A (zh) 网站***及其通信方法
CN108377671A (zh) 处理报文的方法和计算机设备
WO2004086725A3 (en) Network service architecture
CN113010333B (zh) 适用于Linux服务器集群的多场景进程间通信方法
WO2017174026A1 (zh) 一种客户端连接方法及***
CN105635083A (zh) 基于服务器和客户端架构的业务处理方法及业务处理***
Tortonesi et al. Enabling the deployment of COTS applications in tactical edge networks
CN105207860B (zh) 一种业务加速***及方法
CN103699450B (zh) 一种Linux下的自适应组件间通信方法
CN104243610A (zh) 一种分布式文件传输服务方法
CN100452656C (zh) 用于应用消息压缩及解压缩的方法和设备
CN104539510A (zh) 一种基于多协议的信息推送***及方法
CN102890644B (zh) 一种基于字节流的进程间通讯方法
CN105357329B (zh) 跨idc网络环境下业务数据的传输方法、装置及***
CN103841181A (zh) 一种局域网多线程文件传输方法
CN103037000A (zh) 一种发布订阅***及其通知消息处理方法
EP1917580B1 (en) Peer-to-peer communication system
US20120102452A1 (en) Method for allowing distributed running of an application and related pre-processing unit
CN104113564A (zh) 超文本传输协议连接复用方法、设备、***及终端
CN107798067A (zh) 适用于多型号卫星测试的数据库规格化存储***及方法
CN105471718A (zh) 一种全双工消息队列的实现方法
CN104283762A (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