[C++] socket -8 [命名管道]

简介:


 

::命名管道不但能实现同一台机器上两个进程通信,还能在网络中不同机器上的两个进程之间的通信机制。与邮槽不同,命名管道是采用基于连接并且可靠的传输方式,所以命名管道传输数据只能一对一进行传输。

复制代码
 1 /*
 2 命名管道服务器
 3 */
 4 #include<windows.h>
 5 #include<stdio.h>
 6 int main()
 7 {
 8     HANDLE hpip;//定义命名管道句柄
 9     OVERLAPPED ovi={0};//定义结构体变量
10     char buf[200];//定义数据缓冲区
11     DWORD readbuf;//获取实际读取字节数
12     hpip=CreateNamedPipe("\\\\.\\pipe\\pipename",PIPE_ACCESS_DUPLEX,
13         PIPE_TYPE_BYTE,PIPE_UNLIMITED_INSTANCES,1024,1024,0,NULL);//创建命名管道
14     printf("创建管道成功,正在等待客户端连接!\r\n");
15     if(::ConnectNamedPipe(hpip,&ovi))//等待客户端的连接请求
16     {
17         printf("客户端连接成功\r\n");
18         printf("正在读取数据!\r\n");
19         if(ReadFile(hpip,buf,200,&readbuf,NULL))//读取管道数据
20         {
21             printf("读取数据成功!\r\n");
22             printf("读取数据是: %s\r\n",buf);
23         }
24         else 
25         {
26             printf("读取数据失败\r\n");
27         }
28     }
29     ::Sleep(10000);
30     return 0;
31 }
复制代码
复制代码
 1 /*
 2 命名管道客户端
 3 */
 4 #include<windows.h>
 5 #include<stdio.h>
 6 int main()
 7 {
 8     HANDLE hpip;
 9     OVERLAPPED ovi={0};
10     char buf[]="命名管道测试程序!\r\n";//定义数据缓冲区
11     DWORD readbuf;//定义结构体变量
12     printf("正在连接命名管道!\r\n");
13     if(WaitNamedPipe("\\\\.\\pipe\\pipename",NMPWAIT_WAIT_FOREVER))//连接命名管道
14     {
15         hpip=CreateFile("\\\\.\\pipe\\pipename",GENERIC_READ|GENERIC_WRITE,0,
16             NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//打开指定命名管道
17         if(hpip==INVALID_HANDLE_VALUE)
18         {
19             printf("打开命名管道失败\r\n");
20         }
21         else
22         {
23             if(WriteFile(hpip,buf,sizeof(buf),&readbuf,NULL))//写入数据到管道
24             {
25                 printf("数据写入成功!\r\n");
26             }
27             else 
28             {
29                 printf("数据写入失败\r\n");
30             }
31         }
32     }
33     else 
34     {
35         printf("管道创建失败!\r\n");
36     }
37     ::Sleep(10000);
38     return 0;
39 }
复制代码



相关文章
|
1月前
|
数据处理 C# C++
如何使用C#和C++结构体实现Socket通信
如何使用C#和C++结构体实现Socket通信
|
8天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
24 6
|
5月前
|
存储 Cloud Native Linux
C++封装了socket通信类
C++封装了socket通信类
|
8月前
|
网络协议 Linux C语言
linux下CC++网络编程基本:socket实现tcp和udp的例子
linux下CC++网络编程基本:socket实现tcp和udp的例子
162 0
|
2月前
|
C++
C++实现Socket连接通信
C++实现Socket连接通信
13 1
|
3月前
C++socket客户端select异步连接发送接收数据
C++socket客户端select异步连接发送接收数据
23 0
|
4月前
|
网络协议 Linux PHP
40001.C++socket网络编程
40001.C++socket网络编程
29 0
|
4月前
|
网络协议 API 数据安全/隐私保护
C/C++ 实现Socket交互式服务端
在 Windows 操作系统中,原生提供了强大的网络编程支持,允许开发者使用 Socket API 进行网络通信,通过 Socket API,开发者可以创建、连接、发送和接收数据,实现网络通信。本文将深入探讨如何通过调用原生网络 API 实现同步远程通信,并介绍了一个交互式 Socket 类的封装,提升了编写交互式服务器的便利性。
41 0
C/C++ 实现Socket交互式服务端
|
5月前
|
存储 网络协议 Unix
C++项目实战-socket编程
C++项目实战-socket编程
43 1
|
7月前
|
程序员 C++ Windows
Windows C++ 使用PIPE命名管道实现进程间通讯
本文章是介绍在Windows下,使用PIPE管道实现进程间通讯,可是实现两个进程之前相互发送读取消息。
96 0