服务器端
- 创建邮槽
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("\n%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("\n%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 }
原文地址:https://www.cnblogs.com/xiaochi/p/8455180.html
时间: 2024-10-14 09:35:27