zoukankan      html  css  js  c++  java
  • 77.邮槽通信

    服务器端

    • 创建邮槽
      1                                    //名称,数量    等待时间          安全属性
      2     HANDLE hmailslot = CreateMailslotA(MAILSLOT, 0, MAILSLOT_WAIT_FOREVER, NULL);
    • 获取邮槽信息
      1 DWORD dxNextsize = 0;//标识最大的数据大小
      2             DWORD dxmsgcount = 0;//消息数量
      3             DWORD readcount = 0;//读取成功的数量
      4 
      5             //获取邮槽信息
      6                                //文件名            标记最大的数据大小          多少条消息    安全属性
      7             if (GetMailslotInfo(hmailslot, NULL,    &dxNextsize,                &dxmsgcount, NULL))
    • 从邮槽读取一个数据 
      1                     //    LPBYYE 的类型是 unsigned char *
      2                     //分配内存
      3                     LPBYTE lpbuf = malloc(dxNextsize + 1);
      4                     //读取一行
      5                              //文件名   首地址   大小        读的个数
      6                     ReadFile(hmailslot, lpbuf, dxNextsize, &readcount, NULL);
      7                     printf("
      %s", lpbuf);

    、服务端负责显示

    服务端完整代码

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<Windows.h>
     4 
     5 //定义邮槽
     6 #define MAILSLOT "\\.\mailslot\cgw"
     7 
     8 
     9 void main()
    10 {
    11     //创建邮槽
    12                                        //名称,数量    等待时间          安全属性
    13     HANDLE hmailslot = CreateMailslotA(MAILSLOT, 0, MAILSLOT_WAIT_FOREVER, NULL);
    14     if (hmailslot == NULL)
    15     {
    16         printf("创建失败");
    17     }
    18     else
    19     {
    20 
    21         while (1)
    22         {
    23             system("pause");
    24             DWORD dxNextsize = 0;//标识最大的数据大小
    25             DWORD dxmsgcount = 0;//消息数量
    26             DWORD readcount = 0;//读取成功的数量
    27 
    28             //获取邮槽信息
    29                                //文件名            标记最大的数据大小          多少条消息    安全属性
    30             if (GetMailslotInfo(hmailslot, NULL,    &dxNextsize,                &dxmsgcount, NULL))
    31             {
    32 
    33                 for (int i = 0; i < dxmsgcount;i++)
    34                 {
    35                     //    LPBYYE 的类型是 unsigned char *
    36                     //分配内存
    37                     LPBYTE lpbuf = malloc(dxNextsize + 1);
    38                     //读取一行
    39                              //文件名   首地址   大小        读的个数
    40                     ReadFile(hmailslot, lpbuf, dxNextsize, &readcount, NULL);
    41                     printf("
    %s", lpbuf);
    42                 }
    43             }
    44             else
    45             {
    46                 printf("error");
    47             }
    48         }
    49     }
    50     system("pause");
    51 }

    客户端

    • 打开邮槽
      1 //第一个名称,第二个写入,第三个共享读,打开已经存在
      2     HANDLE hmailslot = CreateFileA(MAILSLOT, 
      3         GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);
    • 向邮槽写入数据
      1 char str[10] = "123456789";
      2         scanf("%s", str);
      3         //转化指针类型
      4         LPBYTE lpmsg = (LPBYTE)str;
      5         int wok = 0;
      6         //写入信息,第一个句柄,第二个写入内存首地址,第三个长度,第四个写入成功保存wok
      7         WriteFile(hmailslot, lpmsg,10,&wok,NULL);
    • 关闭邮槽
      1 CloseHandle(hmailslot);//关闭

    客户端完整代码

     1 #define  _CRT_SECURE_NO_WARNINGS
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 #include<Windows.h>
     5 
     6 #define MAILSLOT "\\.\mailslot\cgw"
     7 
     8 //#define GENERIC_READ                     (0x80000000L)
     9 //#define GENERIC_WRITE                    (0x40000000L)
    10 //#define GENERIC_EXECUTE                  (0x20000000L)
    11 //#define GENERIC_ALL                      (0x10000000L)
    12 void main()
    13 {
    14 
    15     //第一个名称,第二个写入,第三个共享读,打开已经存在
    16     HANDLE hmailslot = CreateFileA(MAILSLOT, 
    17         GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);
    18 
    19     if (hmailslot ==INVALID_HANDLE_VALUE)
    20     {
    21         printf("打开失败");
    22     }
    23     while (1)
    24     {
    25         char str[10] = "123456789";
    26         scanf("%s", str);
    27         //转化指针类型
    28         LPBYTE lpmsg = (LPBYTE)str;
    29         int wok = 0;
    30         //写入信息,第一个句柄,第二个写入内存首地址,第三个长度,第四个写入成功保存wok
    31         WriteFile(hmailslot, lpmsg,10,&wok,NULL);
    32         
    33     }
    34     CloseHandle(hmailslot);//关闭
    35 
    36     system("pause");
    37 }
  • 相关阅读:
    js_Array类型_find和findIndex
    js_正则表达式专项
    html5_音视频元素_audio&video
    html5_延迟(defer)脚本与异步(async)脚本
    html5_头部七元素_base元素
    html5_头部七元素_link元素
    html5_头部七元素_meta元素
    css_@media
    js_事件类型——鼠标点击事件
    puppeteer headless
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8455180.html
Copyright © 2011-2022 走看看