windows namedPipe 命名管道clent and server
1.client:
#include "iostream"
#include "windows.h" using namespace std;
void main(int argc,char* argv[])
{
LPCTSTR Message="the pipe's message from a client to server.";
if(argc==)
Message=argv[];
DWORD WriteNum; if(WaitNamedPipe("\\\\.\\Pipe\\Test",NMPWAIT_WAIT_FOREVER)==FALSE){
cout<<"等待链接失败!"<<endl;
return;
} HANDLE hPipe=CreateFile("\\\\.\\Pipe\\Test",GENERIC_READ|\
GENERIC_WRITE,,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hPipe==INVALID_HANDLE_VALUE){
cout<<"管道打开失败!"<<endl;
return;
} cout<<"管道连接成功"<<endl;
if(WriteFile(hPipe,Message,strlen(Message),&WriteNum,NULL)==FALSE){
cout<<"数据写入管道失败!"<<endl;
}
CloseHandle(hPipe);
}
2.server:
#include "iostream"
#include "windows.h"
using namespace std; void main(){
char buffer[];
DWORD ReadNum; HANDLE m_hPipe=CreateNamedPipe("\\\\.\\Pipe\\Test",PIPE_ACCESS_DUPLEX,PIPE_TYPE_BYTE|PIPE_READMODE_BYTE,,,,,NULL); if(m_hPipe==INVALID_HANDLE_VALUE)
cout<<"创建命名管道失败!"<<endl; while(){
if(ConnectNamedPipe(m_hPipe,NULL)==FALSE){
CloseHandle(m_hPipe);
cout<<"与客户机建立链接失败"<<endl;
} if(ReadFile(m_hPipe,buffer,,&ReadNum,NULL)==FALSE)
cout<<"read pipe failer!\n"<<endl; else{
buffer[ReadNum]=;
cout<<"read pipe is:"<<buffer<<".\n"<<endl;
} if(DisconnectNamedPipe(m_hPipe)==FALSE)
cout<<"终止链接失败"<<endl;
else
cout<<"成功终止链接"<<endl;
if(strcmp(buffer,"end")==)
break;
} CloseHandle(m_hPipe);
}
windows namedPipe 命名管道clent and server的更多相关文章
- Windows进程间通信—命名管道
命名管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节.我们在不了解网络协议的情况下,也可以利用命名管道来实现进程间的通信.与Socket网络通信相比,命名管道不再需要编写身份验证的代码.将 ...
- Windows进程间通信--命名管道
1 相关概述 命名管道(Named Pipes)是一种简单的进程间通信(IPC)机制.命名管道可以在同一台计算机的不同进程之间,或者跨越一个网络的不同计算机的不同进程之间的可靠的双向或单向的数据通信. ...
- c#NamedPipe命名管道通信例子
服务端 private NamedPipeServerStream pipeServer; private Thread receiveDataThread = null; public fServe ...
- SQL Server 连接问题圣经-命名管道
SQL Server 连接问题圣经-命名管道 (1) APGC DSD Team 12 Jan 2011 1:24 AM 3 一.前言 在使用SQL Server 的过程中,用户遇到的最多的莫过于连接 ...
- SQL Server 连接问题-命名管道
原文:SQL Server 连接问题-命名管道 出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/01/12/sql-server-1.aspx 一.前言 ...
- 使用命名管道承载gRPC
最近GRPC很火,感觉整RPC不用GRPC都快跟不上时髦了. gRPC设计 刚好需要使用一个的RPC应用系统,自然而然就盯上了它,但是它真能够解决所有问题吗?不见得,先看看他的优点: gRPC是一种与 ...
- [杂]SQL Server 之命名管道连接
命名管道是通过进程间通信(IPC)机制实现通信.具体来说,命名管道建立在服务器的IPC$共享基础上,通过IPC$共享来进行通信. SQL Server命名管道 SQL Server 首先在服务器上创建 ...
- windows命名管道
命名管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节. 将命名管道作为一种网络编程方案时,它实际上建立了一个C/S通信体系,并在其中可靠的传输数据.命名管道服务器和客户机的区别在于:服务器 ...
- Windows网络编程笔记3 ---- 邮槽和命名管道
邮槽和命名管道的使用方法也很简单,只需几个有限的函数就可以实现双方的通信. 第三.邮槽 邮槽----进程间通信机制. 通过邮槽客户进程可以将消息通过广播给一个或多个服务进程.这是一个单向通信机制,缺点 ...
随机推荐
- Bluetooth Low Energy介绍
目录 1. 介绍 2. 协议栈 3. 实现方案 3.1 硬件实现方案 3.2 软件实现方案 1. 介绍 Bluetooth low energy,也称BLE(低功耗蓝牙),在4.0规范中提出 BLE分 ...
- 解决libc.so.6: version `GLIBC_2.14' not found问题
今天centos新机器上运行项目的时候出现题目所示的错误,搜索后发现是底层glibc 版本太低导致. strings /lib64/libc.so.6 |grep GLIBC_ 使用上面的命令发现 g ...
- Swift-10--错误处理
如何优雅地抛出错误-- 抛出错误使用throw关键字. 某个错误被抛出时,那个地方的某部分代码必要要负责处理这个错误,比如纠正这个问题.尝试另外一种方式.或是给用户提示这个错误. ***4种处理错误的 ...
- iOS Node Conflict svn冲突
当出现这个冲突时,应该是我add的文件,和同事处理的方法有冲突导致的. 这个的解决办法是:先revert这个文件,然后再update.
- Java学习-016-CSV 文件读取实例源代码
上文(CSV文件写入)讲述了日常自动化测试过程中将测试数据写入 CSV 文件的源码,此文主要讲述如何从 CSV 文件获取测试过程中所需的参数化数据.敬请各位小主参阅,若有不足之处,敬请大神指正,不胜感 ...
- DelayQueue
1.结构 使用的是PriorityQueue来作为底层的存储 元素需要实现Delayed接口,该接口继承了comparable接口 DelayQueue的队头元素是根据comparable排在队首的元 ...
- echo 命令
echo 命令 -n:表示不换行: -e:对特殊字符的解释执行,比如说变色: 例: [root@bogon ~]# echo -n "test"test[root@bogon ~] ...
- Android 自定义控件之app标题栏的封装
在app的开发中,每一个页面都有上面的标题栏,总不能在开发的过程中没个界面都写一个标题栏的布局,所以为了开发的方便,将该标题栏进行的封装,以后在实际的开发工作中,也可以将该封装好的标题栏控件直接拿来使 ...
- Android 使用PullToRefreshExpandableListView不能setAdapter的问题
private PullToRefreshExpandableListView lv; lv = (PullToRefreshExpandableListView) findViewById(R.id ...
- Android中读取短信信息
Android中读取的短信文件有 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /** * 所有的短信 */ public static final Strin ...