首页 > 其他 > 详细

socket -8 [命名管道]

时间:2014-04-28 23:33:47      阅读:468      评论:0      收藏:0      [点我收藏+]

 

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

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣
 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 }
bubuko.com,布布扣
bubuko.com,布布扣
 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 }
bubuko.com,布布扣

 

socket -8 [命名管道],布布扣,bubuko.com

socket -8 [命名管道]

原文:http://www.cnblogs.com/zjutlitao/p/3692960.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!