[C++] socket -7 [邮槽]

简介:


 

::利用邮槽实现windons进程通信

::一般情况下CreateMailslot()常被使用在进程通信的服务器上,在客户端则是用函数CreateFile()打开指定的邮槽之后进行相关的操作。

::将通过有草读取数据的通信一方成为服务器,而通过邮槽写入数据的一方成为客户端。

复制代码
 1 /*
 2 服务器端
 3 */
 4 #include<windows.h>
 5 #include<stdio.h>
 6 void main()
 7 {
 8     HANDLE mail;//定义邮槽句柄
 9     mail=CreateMailslot("\\\\.\\mailslot\\mysolt",0,MAILSLOT_WAIT_FOREVER,NULL);//创建邮槽
10     if(mail==INVALID_HANDLE_VALUE)//判断邮槽句柄
11     {
12         printf("创建邮槽失败!\n");
13         CloseHandle(mail);
14     }
15     else
16     {
17         const char text[200];//定义字符数组
18         DWORD readtext;//获取实际读取值
19         printf("创建邮槽成功!正在读取数据..\r\n");//[[接下来等待数据客户端写数据,客户端一旦写好就读出数据]
20         if(ReadFile(mail,text,200,&readtext,NULL))//读取数据
21         {
22             printf(text);
23         }
24         else
25         {    
26             printf("\r\n数据读取失败!\n");
27         }
28     }    
29     CloseHandle(mail);//关闭邮槽
30     Sleep(10000);
31     return;
32 }
复制代码
复制代码
 1 /*
 2 客户端
 3 */
 4 #include<windows.h>
 5 #include<stdio.h>
 6 void main()
 7 {
 8     HANDLE mail2;//定义邮槽句柄
 9     char text[]="您好,this is a message";//初始化消息
10     DWORD writetext;//实际发送值
11     mail2=CreateFile("\\\\.\\mailslot\\mysolt",GENERIC_WRITE,FILE_SHARE_READ,
12         NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//打开文件
13     if(INVALID_HANDLE_VALUE==mail2)
14     {    
15         printf("邮槽打开失败!\r\n");
16     }
17     else
18     {    
19         if(WriteFile(mail2,text,sizeof(text),&writetext,NULL))//写入数据
20         {    
21             Sleep(1000);
22             printf("数据写入成功!\n");
23         }
24         else 
25         {
26             printf("数据写入失败!\n");
27         }
28         CloseHandle(mail2);//关闭句柄
29     }
30     Sleep(10000);
31     return;
32 }
复制代码


相关文章
|
1月前
|
数据处理 C# C++
如何使用C#和C++结构体实现Socket通信
如何使用C#和C++结构体实现Socket通信
|
15天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
39 6
|
5月前
|
存储 Cloud Native Linux
C++封装了socket通信类
C++封装了socket通信类
|
8月前
|
网络协议 Linux C语言
linux下CC++网络编程基本:socket实现tcp和udp的例子
linux下CC++网络编程基本:socket实现tcp和udp的例子
164 0
|
2月前
|
C++
C++实现Socket连接通信
C++实现Socket连接通信
13 1
|
3月前
C++socket客户端select异步连接发送接收数据
C++socket客户端select异步连接发送接收数据
23 0
|
4月前
|
网络协议 Linux PHP
40001.C++socket网络编程
40001.C++socket网络编程
29 0
|
4月前
|
网络协议 API 数据安全/隐私保护
C/C++ 实现Socket交互式服务端
在 Windows 操作系统中,原生提供了强大的网络编程支持,允许开发者使用 Socket API 进行网络通信,通过 Socket API,开发者可以创建、连接、发送和接收数据,实现网络通信。本文将深入探讨如何通过调用原生网络 API 实现同步远程通信,并介绍了一个交互式 Socket 类的封装,提升了编写交互式服务器的便利性。
41 0
C/C++ 实现Socket交互式服务端
|
5月前
|
存储 网络协议 Unix
C++项目实战-socket编程
C++项目实战-socket编程
43 1
|
12月前
|
缓存 监控 Linux
Android C++系列:Linux Socket编程(四)多路IO转接服务器
select能监听的文件描述符个数受限于FD_SETSIZE,一般为1024,单纯改变进程打开 的文件描述符个数并不能改变select监听文件个数
94 0