0

0

c++怎么在Windows下使用命名管道(Named Pipe)通信_C++进程间通信与命名管道使用

穿越時空

穿越時空

发布时间:2025-11-17 16:09:06

|

705人浏览过

|

来源于php中文网

原创

命名管道在Windows下通过CreateNamedPipe和CreateFile实现服务器与客户端通信,支持双向数据交换。服务器创建管道并等待连接,客户端连接后双方使用ReadFile和WriteFile进行读写。支持字节流或消息模式,可序列化结构体确保数据兼容。通信结束后调用CloseHandle释放资源,适用于本地进程间高效稳定的数据交互场景。

c++怎么在windows下使用命名管道(named pipe)通信_c++进程间通信与命名管道使用

在Windows下使用C++实现命名管道(Named Pipe)通信,是进程间通信(IPC)的一种高效方式,特别适用于本地系统中不同进程之间的数据交换。命名管道提供了一种类似文件的读写接口,但底层由操作系统管理,支持双向通信、字节流或消息流模式。

创建命名管道服务器

命名管道通常以“服务器-客户端”模式工作。服务器进程负责创建管道实例,等待客户端连接。

使用 CreateNamedPipe 函数创建管道:

HANDLE hPipe = CreateNamedPipe(
    TEXT("\\\\.\\pipe\\MyPipe"),             // 管道名称
    PIPE_ACCESS_DUPLEX,                     // 双向通信
    PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
    1,                                      // 支持1个实例
    1024 * 16,                              // 输出缓冲区大小
    1024 * 16,                              // 输入缓冲区大小
    0,                                      // 默认超时
    NULL                                    // 安全属性
);

创建成功后,使用 ConnectNamedPipe 等待客户端连接:

立即学习C++免费学习笔记(深入)”;

if (ConnectNamedPipe(hPipe, NULL)) {
    // 客户端已连接,可以开始读写
}

之后可用 ReadFileWriteFile 进行数据交互。

实现命名管道客户端

客户端使用 CreateFile 连接到服务器创建的命名管道:

HANDLE hPipe = CreateFile(
    TEXT("\\\\.\\pipe\\MyPipe"),            // 必须与服务器名称一致
    GENERIC_READ | GENERIC_WRITE,           // 读写权限
    0,                                      // 不允许共享
    NULL,                                   // 默认安全属性
    OPEN_EXISTING,                          // 打开已有管道
    0,                                      // 默认属性
    NULL                                    // 无模板文件
);

连接成功后,同样用 ReadFileWriteFile 与服务器通信。

示例发送数据:

数说Social Research
数说Social Research

社媒领域的AI Agent,全能营销智能助手

下载
char buffer[] = "Hello from client";
DWORD written;
WriteFile(hPipe, buffer, strlen(buffer), &written, NULL);

双工通信与数据格式控制

命名管道支持全双工通信。服务器和客户端可交替读写。

注意设置正确的管道模式:

  • PIPE_TYPE_BYTE:数据作为连续字节流处理
  • PIPE_TYPE_MESSAGE:按消息边界划分,适合结构化数据

若使用消息模式,客户端和服务器需配合 TransactNamedPipe 或分隔符来确保消息完整性。

建议在传输结构体时进行序列化,例如转为 JSON 或简单打包成二进制,避免内存布局差异问题。

关闭与资源清理

通信结束后,调用 CloseHandle 释放管道句柄:

CloseHandle(hPipe);

服务器可在处理完一个客户端后调用 DisconnectNamedPipe 断开连接,再重新调用 ConnectNamedPipe 等待下一个客户端。

基本上就这些。命名管道在Windows本地IPC中稳定且性能好,适合服务程序与前端应用通信场景,比如后台守护进程与UI进程的数据交互。掌握基本API调用流程后,封装成类会更便于复用。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

418

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

535

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

76

2025.09.10

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

220

2025.06.09

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

192

2025.07.04

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1074

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

169

2025.10.17

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

31

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 7.7万人学习

C 教程
C 教程

共75课时 | 4.2万人学习

C++教程
C++教程

共115课时 | 14万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号