热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

socket8[命名管道]

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

 

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

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣



1 /*
2 命名管道服务器
3 */
4 #include
5 #include
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
5 #include
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 }

 

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


推荐阅读
  • Givens1,s2,s3,findwhethers3isformedbytheinterleavingofs1ands2.Forexample,Given:s1aabcc ... [详细]
  • 题目链接:http:poj.orgproblem?id1905题目大意:竹竿受热会膨胀。设其原长为L,受热膨胀后的长度L'(1+n*C)*L,其中n,C,L都是要输入的参数 ... [详细]
  • 第一部分:TSqlTop有两种用法1,限制查询结果集返回的行数或总行数的百分比。当将TOP与ORDERBY子句结合使用时,结果集限制为前N个已排序行;否则,以未定义的顺序返回前N个 ... [详细]
  • docker整体了解
    Docker是一个基于LXC技术构建的容器引擎,基于Go语言开发,遵循Apache2.0协议开源Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移 ... [详细]
  • Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理,现在在企业中的使用率也是很广的。git是一个分布式的版本控制系统,不像以前的svn,svn是 ... [详细]
  • CentOS 7.6网卡绑定mode1
    CentOS7.6网卡绑定mode1[root@server~]#systemctlstopNetworkManager[root@server~]#systemctldisabl ... [详细]
  • queue接口特点:可以模拟队列行为,即“先进先出”。接口结构queue接口继承了Collection接口,并增加了一些新方法12345678910111213141516publ ... [详细]
  • PythonDay3
    #Author:ZhaoBin#实现对Haproxy配置文件的增删改查deffetch(backend):result[]withopen('ha.conf',&# ... [详细]
  • 1、对于List而言,要不然就使用迭代器,要不然就从后往前删除,从前往后删除会出现角标越界。因为我List有两个remove方法,一个是int作为形参(删除指定位置的元素),一个是 ... [详细]
  • 内存暴增排查分析
    一次偶然间,发现测试环境iis站点内存突然间暴增,平常都是300M,这次一下子暴增到8g于是就开始了接下来的分析发现Dictionary居然有1.78g懵逼windbg分析1.看看 ... [详细]
  • 1011-MarriageCeremoniesPDF(English)StatisticsForumTimeLimit:2second(s)MemoryLimit:32MBYouw ... [详细]
  • [No000057]一个人默默背单词,小心被传染哦
    不日凛冬将至,全国各地,已有多名少侠因季节变化,出现了不同程度的四肢不勤、bd不分的症状。具体表现为——包大人在此高能预警:不想背单词,有可能你已经被传染了。好好的,怎么突然不想背 ... [详细]
  • 1.EF跟LINQ不是一码事儿。2.LINQtoEF是LINQ的一个provider,LINQtoSQL也是LINQ的一个provider。LINQtoEF是LINQtoSQL的替 ... [详细]
  • Matplotlib笔记:设置画布属性并保存图片(figsize,dpi,savefig)
    设置画布属性并保存图片importmatplotlib.pyplotaspltplt.figure(figsize(10,4),dpi80)#图片长宽和清晰度plt.p ... [详细]
  • PICT初探索
    pict用于测试用例的生成,非常高效。也非常方便。安装完成后主要程序就一个exe文件。需要通过cmd命令行进入pict文件夹。建立测试用例文件然后使用简单的命令行生成测试用例也可以 ... [详细]
author-avatar
谢莹UiK_1928
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有