C/C++ 进程通讯(命名管道)的实例
发布时间 - 2026-01-11 02:44:21 点击率:次服务端代码:
// pipe_server.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <ctime>
int main(int argc, _TCHAR* argv[])
{
srand(time(NULL));
char buf[256] = "";
DWORD rlen = 0;
HANDLE hPipe = CreateNamedPipe(
TEXT("\\\\.\\Pipe\\mypipe"), //管道名
PIPE_ACCESS_DUPLEX, //管道类型
PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_WAIT, //管道参数
PIPE_UNLIMITED_INSTANCES, //管道能创建的最大实例数量
0, //输出缓冲区长度 0表示默认
0, //输入缓冲区长度 0表示默认
NMPWAIT_WAIT_FOREVER, //超时时间
NULL); //指定一个SECURITY_ATTRIBUTES结构,或者传递零值
if (INVALID_HANDLE_VALUE == hPipe)
{
printf("Create Pipe Error(%d)\n",GetLastError());
}
else
{
printf("Waiting For Client Connection...\n");
if(!ConnectNamedPipe(hPipe, NULL)) //阻塞等待客户端连接。
{
printf("Connection failed!\n");
}
else
{
printf("Connection Success!\n");
}
while (true)
{
if(!ReadFile(hPipe,buf,256,&rlen,NULL)) //接受客户端发送过来的内容
{
printf("Read Data From Pipe Failed!\n");
break;
}
else
{
printf("From Client: data = %s, size = %d\n", buf, rlen);
char wbuf[256] = "";
sprintf(wbuf, "%s%d", wbuf, rand()%1000);
DWORD wlen = 0;
WriteFile(hPipe, wbuf, sizeof(wbuf), &wlen, 0); //向客户端发送内容
printf("To Client: data = %s, size = %d\n", wbuf, wlen);
Sleep(1000);
}
}
FlushFileBuffers(hPipe);
DisconnectNamedPipe(hPipe);
CloseHandle(hPipe);//关闭管道
}
system("pause");
return 0;
}
客户端代码:
// pipe_client.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <ctime>
int main(int argc, _TCHAR* argv[])
{
srand(time(NULL));
DWORD wlen = 0;
Sleep(1000);//等待pipe的创建成功!
BOOL bRet = WaitNamedPipe(TEXT("\\\\.\\Pipe\\mypipe"), NMPWAIT_WAIT_FOREVER);
if (!bRet)
{
printf("connect the namedPipe failed!\n");
return 0;
}
HANDLE hPipe = CreateFile( //管道属于一种特殊的文件
TEXT("\\\\.\\Pipe\\mypipe"), //创建的文件名
GENERIC_READ | GENERIC_WRITE, //文件模式
0, //是否共享
NULL, //指向一个SECURITY_ATTRIBUTES结构的指针
OPEN_EXISTING, //创建参数
FILE_ATTRIBUTE_NORMAL, //文件属性(隐藏,只读)NORMAL为默认属性
NULL); //模板创建文件的句柄
if (INVALID_HANDLE_VALUE == hPipe)
{
printf("open the exit pipe failed!\n");
}
else
{
while(true)
{
char buf[256] = "";
sprintf(buf,"%s%d",buf,rand()%1000);
if(WriteFile(hPipe,buf,sizeof(buf),&wlen,0)==FALSE) //向服务器发送内容
{
printf("write to pipe failed!\n");
break;
}
else
{
printf("To Server: data = %s, size = %d\n", buf, wlen);
char rbuf[256] = "";
DWORD rlen = 0;
ReadFile(hPipe, rbuf, sizeof(rbuf), &rlen, 0); //接受服务发送过来的内容
printf("From Server: data = %s, size = %d\n", rbuf, rlen);
}
Sleep(1000);
}
CloseHandle(hPipe);//关闭管道
}
system("pause");
return 0;
}
以上这篇C/C++ 进程通讯(命名管道)的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# 进程通讯
# 命名管道
# C++获取当前进程IAT的方法
# C++进程共享数据封装成类实例
# C++进程间共享数据实例
# C++进程的创建和进程ID标识详细介绍
# 客户端
# 给大家
# 应用程序
# 句柄
# 希望能
# 这篇
# 小编
# 服务端
# 大家多多
# 一种特殊
# hPipe
# HANDLE
# DWORD
# TEXT
# CreateNamedPipe
# char
# buf
# rlen
# time
# NULL
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
iOS验证手机号的正则表达式
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
做企业网站制作流程,企业网站制作基本流程有哪些?
EditPlus中的正则表达式 实战(1)
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
如何获取上海专业网站定制建站电话?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
音乐网站服务器如何优化API响应速度?
图册素材网站设计制作软件,图册的导出方式有几种?
如何在腾讯云服务器上快速搭建个人网站?
北京专业网站制作设计师招聘,北京白云观官方网站?
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
Laravel中的Facade(门面)到底是什么原理
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
如何快速登录WAP自助建站平台?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
Laravel API资源类怎么用_Laravel API Resource数据转换
简单实现Android文件上传
Linux后台任务运行方法_nohup与&使用技巧【技巧】
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
英语简历制作免费网站推荐,如何将简历翻译成英文?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
Laravel如何实现用户密码重置功能?(完整流程代码)
php json中文编码为null的解决办法
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Laravel如何使用Blade组件和插槽?(Component代码示例)
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
PythonWeb开发入门教程_Flask快速构建Web应用
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
教你用AI将一段旋律扩展成一首完整的曲子
Mybatis 中的insertOrUpdate操作
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
如何用狗爹虚拟主机快速搭建网站?
如何获取免费开源的自助建站系统源码?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
WordPress 子目录安装中正确处理脚本路径的完整指南
装修招标网站设计制作流程,装修招标流程?
如何快速生成ASP一键建站模板并优化安全性?
浅谈javascript alert和confirm的美化
Swift中循环语句中的转移语句 break 和 continue
5种Android数据存储方式汇总
如何在香港服务器上快速搭建免备案网站?
如何在自有机房高效搭建专业网站?
如何在Windows 2008云服务器安全搭建网站?

