「命名管道」进程间通信——Console程序设计

命名管道服务端

 

//创建一个异步(重叠I/O)服务端,反射客户端发来的消息

 

#pragma once

 

#include <stdio.h>

#include <tchar.h>

#include <Windows.h>

 

#define NUM_PIPES 5

#define BUFFER_SIZE 256

 

 

int _tmain(int argc, _TCHAR* argv[])

{

    HANDLE PipeHandles[NUM_PIPES];

    DWORD BytesTransferred;

    CHAR Buffer[NUM_PIPES][BUFFER_SIZE];

    INT i;

    OVERLAPPED Ovlap[NUM_PIPES];

    HANDLE Event[NUM_PIPES];

 

    BOOL DataRead[NUM_PIPES];

 

    DWORD Ret;

    DWORD Pipe;

 

    for(i = 0; i < NUM_PIPES; i++)

    {

        // 创建命名管道实例

        // PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED 双工异步模式

        // PIPE_TYPE_BYTE | PIPE_READMODE_BYTE 字节流通信

        // NUM_PIPES 连接实例数

        // 默认缓冲区大小,等待超时时间1秒,默认安全符

        if ((PipeHandles[i] = CreateNamedPipe(TEXT(".//PIPE//Tc"),

            PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,

            PIPE_TYPE_BYTE | PIPE_READMODE_BYTE, NUM_PIPES,

            0, 0, 1000, NULL)) == INVALID_HANDLE_VALUE)

        {

            printf("创建命名管道实例 %d 失败, 错误代码: %d/n",

                  i, GetLastError());

            return i;

        }

 

        // 创建无名的事件对象

        // 使用默认安全符,手工复位方式,初试状态为无信号,名称无

        if ((Event[i] = CreateEvent(NULL, TRUE, FALSE, NULL))

            == NULL)

        {

            printf("创建命名管道事件对象实例 %d 失败,错误代码: %d/n",

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值