windows编程之命名管道通信

管道分为两种,一种是匿名管道,一种是命名管道。两者都可以进行进程间的通信,但匿名管道有局限性,它只能在本机上使用,而不能跨网络使用。但是命名管道就不一样了,它弥补了匿名管道的局限性。接下来看下,如何在windows平台下,进行命名管道的通信。

首先,要进行两个进行间的通信,必须要有一个进程主动一点,来创建一个命名的管道,调用CreateNamedPipe即可创建一个命名的管道,其声明如下:

HANDLE CreateNamedPipe(
  LPCTSTR lpName,                             // 管道名称,形式必须为\\.\pipe\pipeName
  DWORD dwOpenMode,                           // 打开管道的模式
  DWORD dwPipeMode,                           // 管道的模式,传输数据的形式
  DWORD nMaxInstances,                        // 最大连接客户端的个数
  DWORD nOutBufferSize,                       // 输出缓冲区的大小
  DWORD nInBufferSize,                        // 输入缓冲区的大小
  DWORD nDefaultTimeOut,                      // 默认的超时时间
  LPSECURITY_ATTRIBUTES lpSecurityAttributes  // 安全属性,一般为NULL
);

创建管道的进程,我们称之为服务器,当我们创建完管道之后,服务器得知道什么时候有客户端进行连接,我们可以通过一个OVERLAPPED这个结构,该结构里有一个event事件,当有客户端进行连接时,事件对象就变成有信号。有了事件之后,我们就可以调用ConnectNamedPipe来等待一个客户端的连接,其声明如下:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值