Description
【管道】(二) 管道通信
> 本文所讲管道通信主要是<B>进程间</B>管道通信。
[toc]
管道
> 命名管道的通信是在一个命名管道服务器和一个命名管道客户之间进行的。命名管道服务器是指创建爱你命名管道的应用程序,客户可以连接到它所创建的命名管道上。命名管道的 <mark>名称的格式</mark> 是 \\Server\pipe\PipeName
。
>
> - 名称中的Server
部分指定了此命名管道服务器当前执行所在的计算机(<mark>需要注意的是</mark>:命名管道服务器不能创建远程系统上的命名管道)。但是这个名称可以是一个DNS名称(比如,mspress.microsoft.com)、一个NetBIOS名称(mspress)或者一个IP地址(131.107.0.1)。
> - 名称中的 Pipe
部分必须是字符串 Pipe
。而 PipeName
则是分配给此命名管道的唯一名。命名管道名称中的唯一名部分可以包含子目录。如:\\MyComputer\Pipe\MyServerApp\ConnectionPipe
是一个包含子目录的命名管道名称的例子。
>
> 综上,我们在一个示例程序中创建的管道可以命名为 \\.\pipe\DemoApp\test.pip
(使用转义也就是\\\\.\\pipe\\DemoApp\\test_pip
),这里的 \
代表的是本地计算机。
>
> ---
>
> 而以上的管道名,也就是我们后续调用API的参数之一,也是我们唯一可以标识管道的标志。
创建管道的方式一 CreateNamedPipe
原型
HANDLE CreateNamedPipeA(
[in] LPCSTR lpName,
[in] DWORD dwOpenMode,
[in] DWORD dwPipeMode,
[in] DWORD nMaxInstances,
[in] DWORD nOutBufferSize,
[in] DWORD nInBufferSize,
[in] DWORD nDefaultTimeOut,
[in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
参数说明
lpName
要创建的管道名。dwOpenMode
dwPipeMod
nMaxInstances
nOutBufferSize
nInBufferSize
nDefaultTimeOut
lpSecurityAttributes
用法
创建管道的方式二 CreateFile
原型
参数说明
用法
Demo1——管道客户端和服务端的控制台程序
Demo2——管道类
知识来源:
blog link 【管道】(二) 管道通信