首页 > 代码库 > VC++多线程--进程间通信
VC++多线程--进程间通信
1、邮槽
邮槽是windows系统提供的一种单向通信的机制,邮槽能传输的数据非常小,一般在400k左右。
创建邮槽
HANDLE CreateMailslot(LPCTSTR lpName, //指定邮件槽的名字,如//./Mailslot/[path]name,小数点表示服务器为本的机器(不能为远程计算机创建邮件槽)。DWORD nMaxMessageSize,//可写入邮件槽的最大消息长度(字节单位),客户机发生消息大于该值服务器不接受该消息;为0,接收任意长度消息。DWORD lReadTiemout,//等待模式和不等待模式,MAILSLOT_WAIT_FOREVER无限期等待,0立即返回,其它值以毫秒为单位。LPSECURITY_ATTRIBUTES lpSecurityAttributes//访问控制权限,一般都设为NULL);
实例
服务端
1 #include <Windows.h> 2 #include <stdio.h> 3 int main() 4 { 5 HANDLE mail; //定义邮槽句柄 6 mail=CreateMailslot("\\\\.\\mailslot\\newslot",0,MAILSLOT_WAIT_FOREVER,NULL); //创建邮槽 7 if (mail==INVALID_HANDLE_VALUE) //判断邮槽句柄 8 { 9 printf("创建邮槽失败!\r\n");10 CloseHandle(mail); //关闭句柄11 }12 else13 {14 printf("邮槽创建成功!\r\n");15 char text[200];16 DWORD readtext; //获取实际读取值17 if (ReadFile(mail,text,200,&readtext,NULL)) //读取数据18 {19 printf(text);20 }21 else22 {23 printf("\r\n读取数据失败!\r\n");24 }25 CloseHandle(mail); //关闭句柄26 Sleep(1000);27 }28 29 return 0;30 }
客户端
1 #include <Windows.h> 2 #include <stdio.h> 3 int main() 4 { 5 HANDLE mail2; //邮槽句柄 6 char text[]="我要发消息了"; 7 DWORD writetext; 8 mail2=CreateFile("\\\\.\\mailslot\\newslot",GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); //打开文件/创建文件 9 if (INVALID_HANDLE_VALUE=http://www.mamicode.com/=mail2) //判断是否打开成功10 {11 printf("邮槽打开失败!\r\n");12 13 }14 else15 {16 if (WriteFile(mail2,text,sizeof(text),&writetext,NULL)) //写数据17 {18 Sleep(100);19 printf("数据写入成功\r\n");20 }21 else22 {23 Sleep(100);24 printf("邮槽写入失败!\r\n");25 }26 CloseHandle(mail2); //关闭邮槽27 }28 Sleep(10000);29 return 0;30 }
VC++多线程--进程间通信
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。