命名管道
来源:互联网 发布:数据分析师月薪 编辑:程序博客网 时间:2024/05/17 00:10
实际上都是一种相关通信概念而已,了解并掌握相关操作步骤和流程即可.
注意点:
1.管道是一种半双工概念的,如若想读写互补干扰,最好创建两个管道.(想想管道与自来水间的关系)
2.区别命名管道和匿名管道的区别,匿名管道是能用于存在福进程,也就是具有继承关系的继承来通信,命名管道可以用于网络,也可以用于主机内部进程间通信.
服务器端:创建命名管道 ,等待连接 ,通过readfile/writefile读写数据 关闭连接,关闭通道句柄.
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <conio.h>
const char *pStrPipeName = "\\\\.\\pipe\\NamePipe_MoreWindows";
int _tmain(int argc, _TCHAR* argv[])
{
// 服务器这边操作流程:创建命名管道 ,等待连接 ,通过readfile/writefile读写数据 关闭连接,关闭通道句柄.
HANDLE hPipe = CreateNamedPipe(pStrPipeName, PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES, 0, 0, NMPWAIT_WAIT_FOREVER, 0);
if (ConnectNamedPipe(hPipe, NULL) != NULL)//等待连接。
{
printf("连接成功,开始接收数据\n");
const int BUFFER_MAX_LEN = 256;
char szBuffer[BUFFER_MAX_LEN];
DWORD dwLen;
//接收客户端发送的数据
ReadFile(hPipe, szBuffer, BUFFER_MAX_LEN, &dwLen, NULL);//读取管道中的内容(管道是一种特殊的文件)
printf("接收到数据长度为%d字节\n", dwLen);
printf("具体数据内容如下:%s\n", szBuffer);
//确认已收到数据
printf("向客户端发送已经收到标志\n");
strcpy(szBuffer, "服务器已经收到");
WriteFile(hPipe, szBuffer, strlen(szBuffer) + 1, &dwLen, NULL);
}
DisconnectNamedPipe(hPipe);
CloseHandle(hPipe);//关闭管道
return 0;
return 0;
}
客户端流程:连接匿名管道,打开匿名管道,并进行读写
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- 命名管道
- HNOI2016 最小公倍数
- eclipse下配置GO语言的开发环境
- Mybatis笔记一
- LeetCode 486. Predict the Winner
- OJ提交题目中的语言选项里G++与C++的区别
- 命名管道
- 1065. A+B and C (64bit) (20)
- CSU-1005
- 微信支付集成
- node.js第五天
- jsp request乱码
- 10种使测试人员陷入困境的行为趋势
- 反射相关
- JZOJ 3506. 【NOIP2013模拟11.4A组】善良的精灵