CN108833578A - 基于fifo命名管道进行双工通信的方法及相关设备 - Google Patents

基于fifo命名管道进行双工通信的方法及相关设备 Download PDF

Info

Publication number
CN108833578A
CN108833578A CN201810701822.0A CN201810701822A CN108833578A CN 108833578 A CN108833578 A CN 108833578A CN 201810701822 A CN201810701822 A CN 201810701822A CN 108833578 A CN108833578 A CN 108833578A
Authority
CN
China
Prior art keywords
fifo
pipeline
client
name pipeline
connection
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
Application number
CN201810701822.0A
Other languages
English (en)
Other versions
CN108833578B (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.)
Guangzhou Zhongtian Technology Consulting Co ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810701822.0A priority Critical patent/CN108833578B/zh
Publication of CN108833578A publication Critical patent/CN108833578A/zh
Application granted granted Critical
Publication of CN108833578B publication Critical patent/CN108833578B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/14Two-way operation using the same type of signal, i.e. duplex
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明实施例公开了一种基于FIFO命名管道进行双工通信的方法及相关设备,用于解决现有技术中在Linux系统中利用FIFO管道只能实现进程间的半双工通信的问题。本发明实施例方法包括:FIFO服务器接收FIFO客户端发送的连接建立请求消息,连接建立请求消息包括FIFO客户端的第一本地命名管道的标识信息;FIFO服务器根据连接建立请求消息创建与FIFO客户端对应的FIFO会话;响应于连接建立请求消息,FIFO服务器通过FIFO会话的第二远程命名管道向FIFO客户端发送连接建立请求响应消息,连接建立请求响应消息包括第二本地命名管道的标识信息,以使得FIFO客户端通过第一远程命名管道向FIFO会话发送信息,第一远程命名管道为在FIFO客户端中与第二本地命名管道对应的管道。

Description

基于FIFO命名管道进行双工通信的方法及相关设备
技术领域
本发明涉及信息处理技术领域,尤其涉及一种基于FIFO命名管道进行双工通信的方法及相关设备。
背景技术
在Linux系统中,可以利用先入先出队列(first in first out,FIFO)管道实现进程间的数据通信,然而,现有技术中,FIFO只能进行单向的数据传递,即只能实现半双工通信,所谓半双工通信,可以理解为同一时刻只能发送或者接收数据,而不能同时进行发送和接收。
因此,如何利用FIFO使得进行数据通信的两端,能够进行全双工通信,即能够同时进行数据的发送与接收,成为一个亟待解决的问题。
发明内容
本发明实施例提供了一种基于FIFO命名管道进行双工通信的方法及相关设备,用于解决现有技术中在Linux系统中利用FIFO管道只能实现进程间的半双工通信的问题。
本发明实施例的第一方面提供了一种基于FIFO命名管道进行双工通信的方法,所述方法应用于Linux系统,包括:FIFO服务器接收FIFO客户端发送的连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息;所述FIFO服务器根据所述连接建立请求消息创建与所述FIFO客户端对应的FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;响应于所述连接建立请求消息,所述FIFO服务器通过所述FIFO会话的第二远程命名管道向所述FIFO客户端发送连接建立请求响应消息,所述连接建立请求响应消息包括所述第二本地命名管道的标识信息,以使得所述FIFO客户端通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
在一种可能的实施例中,所述FIFO服务器接收FIFO客户端发送的连接建立请求消息之前,所述方法还包括:所述FIFO服务器创建监听连接命名管道,所述监听连接命名管道用于接收所述FIFO客户端发送的连接建立请求消息。
在一种可能的实施例中,所述FIFO服务器根据所述连接建立请求消息创建与所述FIFO客户端对应的FIFO会话包括:所述FIFO服务器根据所述第一本地命名管道的标识信息创建所述第二本地命名管道,所述第二本地命名管道的标识信息为所述FIFO服务器随机生成;所述FIFO服务器根据所述第一远程命名管道的标识信息获取所述第二远程命名管道。
本发明实施例的第二方面提供了一种基于FIFO命名管道进行双工通信的方法,所述方法应用于Linux系统,包括:FIFO客户端向FIFO服务器发送连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息,以使得所述FIFO服务器根据所述连接建立请求创建FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;所述FIFO客户端通过所述第一本地命名管道接收所述FIFO服务器发送的连接建立请求响应消息,所述连接建立请求响应消息包括第二本地命名管道的标识信息;所述FIFO客户端通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
在一种可能的实施例中,所述FIFO客户端向FIFO服务器发送连接建立请求消息之前,所述方法还包括:获取所述FIFO服务器的监听连接命名管道的标识信息,所述所述监听连接命名管道用于接收所述FIFO客户端发送的连接建立请求消息;生成随机字符,以根据所述随机字符创建所述第一本地命名管道。
本发明实施例的第三方面提供了一种FIFO服务器,包括:收发单元,用于接收FIFO客户端发送的连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息;创建单元,用于根据所述连接建立请求消息创建与所述FIFO客户端对应的FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;响应于所述连接建立请求消息,所述收发单元还用于通过所述FIFO会话的第二远程命名管道向所述FIFO客户端发送连接建立请求响应消息,所述连接建立请求响应消息包括所述第二本地命名管道的标识信息,以使得所述FIFO客户端通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
在一种可能的实施例中,所述创建单元包括:创建模块,用于根据所述第一本地命名管道的标识信息创建所述第二本地命名管道,所述第二本地命名管道的标识信息为所述FIFO服务器随机生成;获取模块,用于根据所述第一远程命名管道的标识信息获取所述第二远程命名管道。
本发明实施例的第四方面提供了一种FIFO客户端,包括:第一收发单元,用于向FIFO服务器发送连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息,以使得所述FIFO服务器根据所述连接建立请求创建FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;第二收发单元,用于通过所述第一本地命名管道接收所述FIFO服务器发送的连接建立请求响应消息,所述连接建立请求响应消息包括第二本地命名管道的标识信息;所述第二收发单元还用于通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
本发明第五方面提供了一种电子设备,包括存储器、处理器,其特征在于,所述处理器用于执行存储器中存储的计算机管理类程序时实现如上述任意一项所述的基于FIFO命名管道进行双工通信的方法的步骤。
本发明第六方面提供了一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于:所述计算机管理类程序被处理器执行时实现如上述任意一项所述的基于FIFO命名管道进行双工通信的方法的步骤。
从以上技术方案可以看出,本发明实施例具有以下优点:FIFO服务器接收FIFO客户端发送的连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息;所述FIFO服务器根据所述连接建立请求消息创建与所述FIFO客户端对应的FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;响应于所述连接建立请求消息,所述FIFO服务器通过所述FIFO会话的第二远程命名管道向所述FIFO客户端发送连接建立请求响应消息,所述连接建立请求响应消息包括所述第二本地命名管道的标识信息,以使得所述FIFO客户端通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。本发明实施例中,利用FIFO进行数据通信的两端,能够进行全双工通信,即能够同时进行数据的发送与接收,解决了现有技术中在Linux系统中利用FIFO管道只能实现进程间的半双工通信的问题。
附图说明
图1为本发明实施例提供的一种可能的基于FIFO命名管道进行双工通信的方法的流程图;
图2为本发明实施例提供的一种可能的FIFO服务器的结构示意图;
图3为本发明实施例提供的一种可能的FIFO客户端的结构示意图;
图4为本发明实施例提供的一种可能的FIFO服务器的硬件结构示意图;
图5为本发明实施例提供的另一可能的FIFO服务器的硬件结构示意图;
图6为本发明实施例提供的一种可能的FIFO客户端的硬件结构示意图;
图7为本发明实施例提供的另种可能的FIFO客户端的硬件结构示意图。
具体实施方式
本发明实施例提供了一种基于FIFO命名管道进行双工通信的方法及相关设备,用于解决现有技术中在Linux系统中利用FIFO管道只能实现进程间的半双工通信的问题。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,为本发明实施例提供的一种可能的基于FIFO命名管道进行双工通信的方法的流程图,具体包括:
为便于更好的理解本发明实施例,将对本发明实施例进行简要说明:在本发明实施例中,用FIFO服务器即FIFOServer代表一个命名管道服务器,其主要功能是用来监听来自FIFO客户端即FIFOClient命名管道客户端的连接请求,然后创建一个FIFO会话对象同FIFOClient进行数据通信。因此本发明实施例的设计模型是一个C/S的客户端与服务器模型,其中该模型中有一个FIFOServer的命名管道服务器对象,对于N个FIFOClient命名管道客户端,FIFOServer会创建N个FIFOSession会话对象,一个FIFOSession对象同与之对应的FIFOClient之间进行全双工通信。
由于Linux系统本身的FIFO命名管道是半双工的,为了实现FIFO会话对象同FIFOClient之间的全双工通信,在FIFOClient与FIFOSession内部各自创建一个FIFO命名管道,标记为m_localPipe,分别称之为第一本地命名管道和第二本地命名管道;并且在FIFOClient中打开FIFOSession创建的第二本地命名管道,标记为m_remotePipe,称之为第一远程命名管道;同理,在FIFOSession中也打开在FIFOClient中创建的第一本地命名管道,称之为第二远程命名管道。因此,在每个FIFOClient与FIFOSession中,都存在两个FIFO命名管道,一个是本地命名管道,一个是远程命名管道。
需要说明的是,在本发明实施例中,FIFOClient与FIFOSession对象只能在各自的本地命名管道m_localPipe上接收数据,并且只能向远程命名管道m_remotePipe上发送数据。这样当FIFOClient向其对端的第一远程命名管道m_remotePipe发送数据时,FIFOSession对象就能够从其第二本地命名管道上接收到来自FIFOClient的数据;同理,当FIFOSession也向其第二远程命名管道上发送数据时,FIFOClient对象也能够从其第一本地命名管道上接收到来自FIFOSession所发送的数据。这样便实现了FIFOClient与FIFOSession之间的全双工通信。
上述双工通信过程实现的前提条件是,FIFOClient已经成功的同FIFOServer建立了连接,从而FIFOServer会创建一个FIFOSession与该FIFOClient进行双工通信。基于此,请结合图1,将对本发明提供的基于FIFO命名管道进行双工通信的方法进行具体说明,包括:
101、FIFOServer注册服务名称端口,并创建监听连接命名管道;
首先,FIFO服务器创建监听连接命名管道,该监听连接命名管道用于接收FIFOClient发送的连接建立请求消息。其中,FIFOServer具体创建监听连接命名管道的方式可以包括:通过Linux系统的mkFIFO函数,将服务名称为XXX的字符串传入该mkFIFO函数的第一个参数中,并将0777(注意前面的0,代表8进制数据,该值代表创建的命名管道对于任何用户都具有可读可写可执行的权限)传入到该mkFIFO函数的第二个参数中,并判断该函数的返回值,如果该函数的返回值为0,则代表创建名称为XXX的监听连接命名管道成功。
102、FIFOServer打开监听连接命名管道;
在创建监听连接命名管道成功后,打开该监听连接命名管道。具体地,基于步骤101,在创建名称为XXX的监听连接命名管道后,调用Linux系统的open函数,同样将管道的名称XXX字符串传入到该open函数的第一个参数中,并将O_RDWR(可读可写)以及O_NONBLOCK(非阻塞)进行或运算之后的结果,传入到该open函数的第二个参数中,如果该open函数调用成功则返回一个非0值的管道描述符,标记为m_listenPipe。这样所创建的m_listenPipe将以非阻塞的方式进行读写。
需要说明的是,该监听连接明明管道只能接收数据,不能发送数据。
103、FIFOClient获取FIFOServer注册的服务名称端口;
FIFOClient通过调用open函数获取FIFOServer所注册的名称为XXX的连接监听管道listenPipe。
104、FIFOClient创建第一本地命名管道;
如果在步骤103中,FIFOClient调用的open函数的返回值等于0,则创建一个目标随机GUID字符串,并通过该目标GUID字符串创建第一本地命名管道。具体的,在创建一个该目标GUID字符串后,调用mkFIFO函数,将第一本地命名管道的标识信息即该目标GUID字符串传入到该mkFIFO函数第一个参数中,并将0777传入到该mkFIFO函数第二个参数中,从而创建第一本地命名管道,即调用mkFIFO(目标GUID,0777)创建第一本地命名管道。然后调用open函数,将目标GUID作为第一个参数传入,将O_RDWR以及O_NONBLOCK或运算之后的值传入到该open函数的第二参数中,可以理解为,open(目标GUID,O_RDWR|O_NONBLOCK)系统函数,从而获取到第一本地命名管道描述符。
105、FIFOServer接收FIFOClient发送的连接建立请求消息;
FIFOClient打开FIFOServer中用于监听连接的监听连接命名管道,将目标GUID字符串填充到FIFOMessageConnect的portName字段中,然后调用write(listenPipe,FIFOMessageConnect)函数向FIFOServer发送连接建立请求消息,其中write函数的第一个参数listenPipe为FIFOClient在步骤103获取的连接监听管道listenPipe。
在FIFOServer侧,FIFOServer打开监听连接命名管道,创建一个线程来循环的处理来自FIFO客户端的连接建立请求消息,并接收每个FIFOSession对应的FIFOClient的消息。在线程循环中,通过调用FIFOServer的listenPortLoop函数来处理来自客户端的连接建立请求消息,通过recvSessionMsg函数,来接收m_sessions列表中所有FIFOSession与之对应的FIFOClient所发送的消息。
在listenPortLoop函数中通过调用read系统函数,将m_listenPipe传入到该read系统函数的第一个参数中,从而接收来自FIFOClient的连接建立请求消息。由于是以O_NONBLOCK非阻塞的方式去接收数据,所以当该read系统函数返回值大于0时,表示成功的接收到了连接建立请求消息,当该read系统函数返回值小于0时,表示该管道中没有连接建立请求消息。如果read系统函数返回值大于0,则表示成功的接收到了一个FIFOMessageConnect连接请求消息。
需要说明的是,该连接建立请求消息包括FIFOClient的第一本地命名管道的标识信息,该第一本地命名管道用于FIFOClient接收信息。
106、FIFOServer根据连接建立请求消息创建与FIFOClient对应的FIFO会话;
在FIFOServer接收到FIFOClient的连接建立请求消息后,根据该连接建立请求消息创建与FIFOClient对应的FIFO会话即FIFOSession。具体的,通过调用FIFOServer的allocSession函数,创建一个FIFOSession会话实例,然后调用FIFOSession的createFrom方法来初始化该FIFOSession,该createFrom函数有两个特别重要的参数,一个是remotePipeName,代表FIFOClient的第一远程命名管道,一个是localPipeName代表该FIFOSession的第二本地命名管道。
由于FIFOClient在向FIFOServer发送FIFOMessageConnect即连接建立请求消息时,会带有FIFOClient的第一本地命名管道的标识信息,该第一本地命名管道的标识信息可用一个portName的字符串表示,该字符串即为createFrom所需要的remotePipeName参数;而localPipeName则通过生成一个随机的全局唯一标识符(globally uniqueidentifier,GUID)字符串来代表,从而保证所有的用于FIFOClient与FIFOSession之间的第二本地命名管道的名称不重复。
同时,在创建FIFOSession后,FIFOServer将创建的FIFOSession放入到m_sessions列表中进行管理。
107、FIFOServer创建FIFO会话中的第二本地命名管道;
同样的,FIFOServer还需创建FIFO会话中的第二本地命名管道。创建第二本地命名管道的方式可以具体包括:同样调用mkFIFO函数,将localPipeName参数(即第二本地命名管道的标识信息)传入到该mkFIFO函数第一个参数中,并将0777传入到该mkFIFO函数第二个参数中,从而创建第二本地命名管道;然后调用open函数,将localPipeName作为第一个参数传入,将O_RDWR以及O_NONBLOCK或运算之后的值传入到该open函数的第二参数中,从而获取到第二本地命名管道描述符m_localPipe。
108、FIFOServer打开第二远程命名管道;
调用open函数,将remotePipeName(FIFOClient的第一远程命名管道)传入到该open函数中,从而获取到FIFOClient中所创建的第一本地命名管道,也就是FIFOSession的第二远程命名管道m_remotePipe。
109、FIFOServer向FIFOClient发送连接建立请求响应消息;
响应于连接建立请求消息,FIFOServer通过FIFOSession的第二远程命名管道向FIFOClient发送连接建立请求响应消息,该连接建立请求响应消息包括第二本地命名管道的标识信息,以使得FIFOClient通过第一远程命名管道向FIFOSession发送信息,其中第一远程命名管道为在FIFOClient中与第二本地命名管道对应的管道。
具体地,在上述步骤106中的createFrom完成之后,便成功的创建了一个FIFOSession,同FIFOClient进行通信。此时必须向FIFOClient发送一个FIFOMessageConnectResult的连接建立请求响应消息,该连接建立请求响应消息中包含有在步骤106中创建的localPipeName字符串,即FIFOSession的第二本地命名管道的标识信息。FIFOClient通过向该localPipeName所对应的第一远程命名管道上向该FIFOSession发送消息。
在FIFOClient侧,FIFOClient发送了连接建立请求消息后,调用read(m_localPipe,FIFOMessageConnectResult)函数接收来自FIFOServer的FIFOMessageConnectResult连接建立请求响应消息(其中read函数的第一个参数为FIFOClient的第一本地命名管道的标识信息。
110、FIFOClient向FIFOServer发送数据。
FIFOClient接收到连接建立请求响应消息后,获取连接建立请求响应消息FIFOMessageConnectResult结构中的portName字段,然后调用open函数获取portName所对应的第一远程命名管道m_remotePipe,从而FIFOClient便可以通过该第一远程命名管道通过FIFOSession向FIFOServer发送数据。
在FIFOServer侧,通过recvSessionMsg函数接收FIFOClient发送的数据。具体地,FIFOServer在recvSessionMsg函数中对m_sessions列表中的所有FIFOSession进行读取操作,也就是调用FIFOSession的read方法,来获取来自FIFOClient的消息。同样在FIFOSession的read方法中,调用Linux系统的read(m_localPipe)方法,将FIFOSession的m_localPipe传入到该函数第一个参数中,如果该函数返回值大于0,则成功获取到FIFO客户端发送的数据。
本申请实施例中,讲述了FIFOServer如何监听来自FIFOClient的连接请求,以及创建相应的FIFOSession同FIFOClient进行数据通信,以及向FIFOClient发送FIFOMessageConnectResult连接建立请求响应消息。实现了利用Linux命名管道进行一对多的进程间双工通信的方法。在该通信过程开始时,FIFOServer只需要注册一个任意的不存在的服务名称,FIFOClient便可以建立起连接,从而实现进程间的双工通信。
上面从基于FIFO命名管道进行双工通信的方法的角度对本发明实施例进行了描述,下面分别从FIFO服务器和FIFO客户端的角度分别对本发明实施例进行描述。
请参阅图2,图2为本发明实施例提供的FIFO服务器的一个实施例示意图,该服务器,具体包括:
收发单元201,用于接收FIFO客户端发送的连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息;
创建单元202,用于根据所述连接建立请求消息创建与所述FIFO客户端对应的FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;
响应于所述连接建立请求消息,所述收发单元201还用于通过所述FIFO会话的第二远程命名管道向所述FIFO客户端发送连接建立请求响应消息,所述连接建立请求响应消息包括所述第二本地命名管道的标识信息,以使得所述FIFO客户端通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
可选的,在一些可能的实现方式中,所述创建单元202具体包括:
创建模块2021,用于根据所述第一本地命名管道的标识信息创建所述第二本地命名管道,所述第二本地命名管道的标识信息为所述FIFO服务器随机生成;
获取模块2022,用于根据所述第一远程命名管道的标识信息获取所述第二远程命名管道。
请参阅图3,图3为本发明实施例提供的客户端的一个实施例示意图,该FIFO客户端,具体包括:
第一收发单元301,用于向FIFO服务器发送连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息,以使得所述FIFO服务器根据所述连接建立请求创建FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;
第二收发单元302,用于通过所述第一本地命名管道接收所述FIFO服务器发送的连接建立请求响应消息,所述连接建立请求响应消息包括第二本地命名管道的标识信息;通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
请参阅图4,图4为本发明实施例提供的电子设备的实施例示意图。
如图4所示,本发明实施例提供了一种电子设备,包括存储器410、处理器420及存储在存储器420上并可在处理器420上运行的计算机程序411,处理器420执行计算机程序411时实现以下步骤:接收FIFO客户端发送的连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息;根据所述连接建立请求消息创建与所述FIFO客户端对应的FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;响应于所述连接建立请求消息,通过所述FIFO会话的第二远程命名管道向所述FIFO客户端发送连接建立请求响应消息,所述连接建立请求响应消息包括所述第二本地命名管道的标识信息,以使得所述FIFO客户端通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
可选的,所述处理器具体用于:
根据所述第一本地命名管道的标识信息创建所述第二本地命名管道,所述第二本地命名管道的标识信息为所述FIFO服务器随机生成;根据所述第一远程命名管道的标识信息获取所述第二远程命名管道。
在具体实施过程中,处理器420执行计算机程序411时,可以实现图1对应的实施例中任一实施方式。
由于本实施例所介绍的电子设备为实施本发明实施例中一种服务器所采用的设备,故而基于本发明实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本发明实施例中的方法不再详细介绍,只要本领域所属技术人员实施本发明实施例中的方法所采用的设备,都属于本发明所欲保护的范围。
请参阅图5,图5为本发明实施例提供的一种计算机可读存储介质的实施例示意图。
如图5所示,本实施例提供了一种计算机可读存储介质500,其上存储有计算机程序511,该计算机程序511被处理器执行时实现如下步骤:接收FIFO客户端发送的连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息;根据所述连接建立请求消息创建与所述FIFO客户端对应的FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;响应于所述连接建立请求消息,通过所述FIFO会话的第二远程命名管道向所述FIFO客户端发送连接建立请求响应消息,所述连接建立请求响应消息包括所述第二本地命名管道的标识信息,以使得所述FIFO客户端通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
可选的,该计算机程序511被处理器执行时具体用于实现如下步骤:根据所述第一本地命名管道的标识信息创建所述第二本地命名管道,所述第二本地命名管道的标识信息为所述FIFO服务器随机生成;根据所述第一远程命名管道的标识信息获取所述第二远程命名管道。
请参阅图6,为本发明实施例提供的另一种电子设备的实施例示意图。
如图6所示,本发明实施例提供了一种电子设备,包括存储器610、处理器620及存储在存储器620上并可在处理器620上运行的计算机程序611,处理器620执行计算机程序611时实现以下步骤:向FIFO服务器发送连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息,以使得所述FIFO服务器根据所述连接建立请求创建FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;通过所述第一本地命名管道接收所述FIFO服务器发送的连接建立请求响应消息,所述连接建立请求响应消息包括第二本地命名管道的标识信息;通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
在具体实施过程中,处理器620执行计算机程序611时,可以实现图1对应的实施例中任一实施方式。
由于本实施例所介绍的电子设备为实施本发明实施例中一种客户端所采用的设备,故而基于本发明实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本发明实施例中的方法不再详细介绍,只要本领域所属技术人员实施本发明实施例中的方法所采用的设备,都属于本发明所欲保护的范围。
请参阅图7,图7为本发明实施例提供的一种计算机可读存储介质的实施例示意图。
如图7所示,本实施例提供了一种计算机可读存储介质700,其上存储有计算机程序711,该计算机程序711被处理器执行时实现如下步骤:向FIFO服务器发送连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息,以使得所述FIFO服务器根据所述连接建立请求创建FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;通过所述第一本地命名管道接收所述FIFO服务器发送的连接建立请求响应消息,所述连接建立请求响应消息包括第二本地命名管道的标识信息;通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

Claims (10)

1.一种基于先入先出队列FIFO命名管道进行双工通信的方法,所述方法应用于Linux系统,其特征在于,包括:
FIFO服务器接收FIFO客户端发送的连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息;
所述FIFO服务器根据所述连接建立请求消息创建与所述FIFO客户端对应的FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;
响应于所述连接建立请求消息,所述FIFO服务器通过所述FIFO会话的第二远程命名管道向所述FIFO客户端发送连接建立请求响应消息,所述连接建立请求响应消息包括所述第二本地命名管道的标识信息,以使得所述FIFO客户端通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
2.根据权利要求1所述的方法,其特征在于,所述FIFO服务器接收FIFO客户端发送的连接建立请求消息之前,所述方法还包括:
创建监听连接命名管道,所述监听连接命名管道用于接收所述FIFO客户端发送的连接建立请求消息。
3.根据权利要求1所述的方法,其特征在于,所述FIFO服务器根据所述连接建立请求消息创建与所述FIFO客户端对应的FIFO会话包括:
所述FIFO服务器根据所述第一本地命名管道的标识信息创建所述第二本地命名管道,所述第二本地命名管道的标识信息为所述FIFO服务器随机生成;
所述FIFO服务器根据所述第一远程命名管道的标识信息获取所述第二远程命名管道。
4.一种基于先入先出队列FIFO命名管道进行双工通信的方法,所述方法应用于Linux系统,其特征在于,包括:
FIFO客户端向FIFO服务器发送连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息,以使得所述FIFO服务器根据所述连接建立请求创建FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;
所述FIFO客户端通过所述第一本地命名管道接收所述FIFO服务器发送的连接建立请求响应消息,所述连接建立请求响应消息包括第二本地命名管道的标识信息;
所述FIFO客户端通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
5.根据权利要求4所述的方法,其特征在于,所述FIFO客户端向FIFO服务器发送连接建立请求消息之前,所述方法还包括:
获取所述FIFO服务器的监听连接命名管道的标识信息,所述所述监听连接命名管道用于接收所述FIFO客户端发送的连接建立请求消息;
生成随机字符,以根据所述随机字符创建所述第一本地命名管道。
6.一种先入先出队列FIFO服务器,其特征在于,包括:
收发单元,用于接收FIFO客户端发送的连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息;
创建单元,用于根据所述连接建立请求消息创建与所述FIFO客户端对应的FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;
响应于所述连接建立请求消息,所述收发单元还用于通过所述FIFO会话的第二远程命名管道向所述FIFO客户端发送连接建立请求响应消息,所述连接建立请求响应消息包括所述第二本地命名管道的标识信息,以使得所述FIFO客户端通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
7.根据权利要求6所述的服务器,其特征在于,所述创建单元包括:
创建模块,用于根据所述第一本地命名管道的标识信息创建所述第二本地命名管道,所述第二本地命名管道的标识信息为所述FIFO服务器随机生成;
获取模块,用于根据所述第一远程命名管道的标识信息获取所述第二远程命名管道。
8.一种先入先出队列FIFO客户端,其特征在于,包括:
第一收发单元,用于向FIFO服务器发送连接建立请求消息,所述连接建立请求消息包括所述FIFO客户端的第一本地命名管道的标识信息,所述第一本地命名管道用于所述FIFO客户端接收信息,以使得所述FIFO服务器根据所述连接建立请求创建FIFO会话,所述FIFO会话包括第二本地命名管道和第二远程命名管道,所述第二本地命名管道用于所述FIFO会话接收信息,所述第二远程命名管道为在所述FIFO会话中与所述第一本地命名管道对应的管道,所述第二远程命名管道用于向所述FIFO客户端发送信息;
第二收发单元,用于通过所述第一本地命名管道接收所述FIFO服务器发送的连接建立请求响应消息,所述连接建立请求响应消息包括第二本地命名管道的标识信息;
所述第二收发单元还用于通过第一远程命名管道向所述FIFO会话发送信息,所述第一远程命名管道为在所述FIFO客户端中与所述第二本地命名管道对应的管道。
9.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-5任意一项所述的方法。
10.一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如权利要求1-5任意一项所述的方法。
CN201810701822.0A 2018-06-30 2018-06-30 基于fifo命名管道进行双工通信的方法及相关设备 Active CN108833578B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810701822.0A CN108833578B (zh) 2018-06-30 2018-06-30 基于fifo命名管道进行双工通信的方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810701822.0A CN108833578B (zh) 2018-06-30 2018-06-30 基于fifo命名管道进行双工通信的方法及相关设备

Publications (2)

Publication Number Publication Date
CN108833578A true CN108833578A (zh) 2018-11-16
CN108833578B CN108833578B (zh) 2021-07-23

Family

ID=64134092

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810701822.0A Active CN108833578B (zh) 2018-06-30 2018-06-30 基于fifo命名管道进行双工通信的方法及相关设备

Country Status (1)

Country Link
CN (1) CN108833578B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111414603A (zh) * 2020-03-17 2020-07-14 用友网络科技股份有限公司 一种基于命名管道间通讯机制的应用
CN111737025A (zh) * 2020-05-25 2020-10-02 中车株洲电力机车研究所有限公司 用于实现VxWorks操作系统环境下RTP间数据调用的方法及系统
CN112559202A (zh) * 2020-12-08 2021-03-26 北京机电工程研究所 基于嵌入式实时操作系统的飞行器应用软件通讯方法
CN112737760A (zh) * 2020-12-22 2021-04-30 航天信息股份有限公司 一种基于管道通信技术进行双工数据通信的方法及系统
CN114338763A (zh) * 2021-12-20 2022-04-12 深圳Tcl新技术有限公司 微服务调用方法、装置、服务器与计算机可读存储介质
CN115460267A (zh) * 2022-08-16 2022-12-09 珠海市奥德维科技有限公司 通讯方法和系统、存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325492A (en) * 1989-09-22 1994-06-28 International Business Machines Corporation System for asynchronously delivering self-describing control elements with a pipe interface having distributed, shared memory
CN102833080A (zh) * 2011-06-15 2012-12-19 康佳集团股份有限公司 一种应用软件的进程间通信方法和系统
CN103605529A (zh) * 2013-05-17 2014-02-26 华为终端有限公司 应用程序的处理方法和装置
CN107526645A (zh) * 2017-09-06 2017-12-29 武汉斗鱼网络科技有限公司 一种通信优化方法及系统
CN107665148A (zh) * 2016-07-28 2018-02-06 中国科学院声学研究所 一种基于Chromium的命名管道进程通信方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325492A (en) * 1989-09-22 1994-06-28 International Business Machines Corporation System for asynchronously delivering self-describing control elements with a pipe interface having distributed, shared memory
CN102833080A (zh) * 2011-06-15 2012-12-19 康佳集团股份有限公司 一种应用软件的进程间通信方法和系统
CN103605529A (zh) * 2013-05-17 2014-02-26 华为终端有限公司 应用程序的处理方法和装置
CN107665148A (zh) * 2016-07-28 2018-02-06 中国科学院声学研究所 一种基于Chromium的命名管道进程通信方法
CN107526645A (zh) * 2017-09-06 2017-12-29 武汉斗鱼网络科技有限公司 一种通信优化方法及系统

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111414603A (zh) * 2020-03-17 2020-07-14 用友网络科技股份有限公司 一种基于命名管道间通讯机制的应用
CN111737025A (zh) * 2020-05-25 2020-10-02 中车株洲电力机车研究所有限公司 用于实现VxWorks操作系统环境下RTP间数据调用的方法及系统
CN111737025B (zh) * 2020-05-25 2024-04-09 中车株洲电力机车研究所有限公司 用于实现VxWorks操作系统环境下实时进程间数据调用的方法及系统
CN112559202A (zh) * 2020-12-08 2021-03-26 北京机电工程研究所 基于嵌入式实时操作系统的飞行器应用软件通讯方法
CN112737760A (zh) * 2020-12-22 2021-04-30 航天信息股份有限公司 一种基于管道通信技术进行双工数据通信的方法及系统
CN112737760B (zh) * 2020-12-22 2023-01-10 航天信息股份有限公司 一种基于管道通信技术进行双工数据通信的方法及系统
CN114338763A (zh) * 2021-12-20 2022-04-12 深圳Tcl新技术有限公司 微服务调用方法、装置、服务器与计算机可读存储介质
CN114338763B (zh) * 2021-12-20 2024-01-19 深圳Tcl新技术有限公司 微服务调用方法、装置、服务器与计算机可读存储介质
CN115460267A (zh) * 2022-08-16 2022-12-09 珠海市奥德维科技有限公司 通讯方法和系统、存储介质
CN115460267B (zh) * 2022-08-16 2023-06-02 珠海市奥德维科技有限公司 通讯方法和系统、存储介质

Also Published As

Publication number Publication date
CN108833578B (zh) 2021-07-23

Similar Documents

Publication Publication Date Title
CN108833578A (zh) 基于fifo命名管道进行双工通信的方法及相关设备
CN109802852B (zh) 应用于网络靶场的网络仿真拓扑的构建方法及系统
CN110443704B (zh) 一种跨链发送资源的方法和装置
CN110311790B (zh) 一种跨链发送可认证消息的方法和装置
CN110430235B (zh) 跨链发送可认证消息的方法、装置、存储介质和计算设备
CN110417783B (zh) 一种基于物联网的数据传输方法、装置、储存介质及终端
MXPA04002729A (es) Transmision y recepcion de mensajes a traves de un canal de comunicacion y modelo de programacion adaptable.
CN109189704A (zh) 一种通用总线接口适配方法及装置
CN106254462A (zh) 一种实现移动终端的远程协助的方法、服务器和系统
CN102902536A (zh) 一种物联网计算机系统
CN107454092A (zh) 一种opcua与dds协议信号转换装置、通信系统及通信方法
CN115913790B (zh) 基于隐私计算网络的数据传输方法、电子设备和存储介质
CN112738139B (zh) 一种跨链访问控制方法和装置
CN108366356A (zh) M2m系统与标识解析系统的互通方法及装置
CN105302564A (zh) 网络办公软件服务控件及实现方法
CN114448719B (zh) 一种报文交互方法、装置和系统
CN109150977A (zh) 基于交易链路自动生成全局流水号的方法
CN105306542A (zh) 一种用于集成Web服务的系统
CN106407061A (zh) 一种北向接口测试装置和北向接口的测试方法
CN113537512A (zh) 基于联邦学习的模型训练方法、装置、系统、设备和介质
CN110445658A (zh) 一种报文处理方法及系统
CN104378411A (zh) 服务交换系统
CN105991421A (zh) 一种集团通信圈内的消息推送方法、设备和系统
CN111459825B (zh) 支付业务的区块链应用系统、方法及装置
KR101951430B1 (ko) Dds 기반 고해상도 공학급 모델 간 계층적 분산 시뮬레이션 장치 및 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240208

Address after: Room 101-1, Building 2, No. 95, Daguan Middle Road, Tianhe District, Guangzhou, Guangdong 510000 (office only)

Patentee after: Guangzhou Zhongtian Technology Consulting Co.,Ltd.

Country or region after: China

Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right