进程通信系列-单向邮槽

简介:


      单向邮槽可以用于局域网的不可靠单向广播,代码长度一般,功能一般

       缺点:不可靠,单向

       优点:简单,不必关心协议

单向邮槽类:

#include "stdafx.h"
#include "mailslot.h"
mailslot::mailslot(void)
{
	hmail=NULL;
}
mailslot::~mailslot(void)
{
	if(hmail)
		CloseHandle(hmail);
}
int mailslot::free()
{
	if(hmail)
	{
		CloseHandle(hmail);
		return 1;
	}
	return 0;
}

int mailslot::have()
{
	if(!hmail)return 0;
	DWORD cbMessage, cMessage;
    GetMailslotInfo(hmail,(LPDWORD) NULL, &cbMessage,&cMessage,0); 
	 if(cbMessage == MAILSLOT_NO_MESSAGE)
		 return 0;
	return 1;
}

int mailslot::create(CString name)
{
	MessageBox(0,"等待发送端","ok",MB_ICONINFORMATION);
	//创建邮槽
	hmail=CreateMailslot("\\\\.\\mailslot\\"+name,0,500,NULL);
	if(hmail==INVALID_HANDLE_VALUE||hmail==0)
	{
		MessageBox(0,"创建失败","错误",MB_ICONERROR);
		hmail=0;
		return 0;
	}
	return 1;
}
CString mailslot::read()
{
	char content[200];
	DWORD dread;
	if(!ReadFile(hmail,content,200,&dread,NULL))
	{
		MessageBox(0,"读取失败","错误",MB_ICONERROR);
		return "";
	}
	return content;
}
int mailslot::connect(CString server,CString name)//server不知道填什么可以,试了好多都不行,只能是.或*,也许是安全问题
{
	hmail=CreateFile("\\\\"+server+"\\mailslot\\"+name,GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
	if(hmail==INVALID_HANDLE_VALUE||hmail==0)
	{
		MessageBox(0,"打开失败!,请确定目标地址已准备接受","错误",MB_ICONERROR);
		hmail=0;
		return 0;
	}
	return 1;
}
int mailslot::send(CString content)
{
	DWORD dwrite;
	if(!WriteFile(hmail,content,content.GetLength()+1,&dwrite,NULL))
	{
		MessageBox(0,"写入失败","错误",MB_ICONERROR);
		return 0;
	}
	return 1;
}


目录
相关文章
|
1月前
|
存储 Unix Linux
进程间通信方式-----管道通信
【10月更文挑战第29天】管道通信是一种重要的进程间通信机制,它为进程间的数据传输和同步提供了一种简单有效的方法。通过合理地使用管道通信,可以实现不同进程之间的协作,提高系统的整体性能和效率。
|
1月前
|
消息中间件 存储 供应链
进程间通信方式-----消息队列通信
【10月更文挑战第29天】消息队列通信是一种强大而灵活的进程间通信机制,它通过异步通信、解耦和缓冲等特性,为分布式系统和多进程应用提供了高效的通信方式。在实际应用中,需要根据具体的需求和场景,合理地选择和使用消息队列,以充分发挥其优势,同时注意其可能带来的复杂性和性能开销等问题。
|
2月前
|
存储 Python
Python中的多进程通信实践指南
Python中的多进程通信实践指南
30 0
|
7月前
|
安全
【进程通信】信号的捕捉原理&&用户态与内核态的区别
【进程通信】信号的捕捉原理&&用户态与内核态的区别
|
7月前
|
Shell
【进程通信】利用管道创建进程池(结合代码)
【进程通信】利用管道创建进程池(结合代码)
|
3月前
|
Java Android开发 数据安全/隐私保护
Android中多进程通信有几种方式?需要注意哪些问题?
本文介绍了Android中的多进程通信(IPC),探讨了IPC的重要性及其实现方式,如Intent、Binder、AIDL等,并通过一个使用Binder机制的示例详细说明了其实现过程。
394 4
|
4月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
4月前
|
消息中间件 安全 Java
Linux源码阅读笔记13-进程通信组件上
Linux源码阅读笔记13-进程通信组件上
|
4月前
|
消息中间件 存储 安全
python多进程并发编程之互斥锁与进程间的通信
python多进程并发编程之互斥锁与进程间的通信
|
4月前
|
Python
Python IPC深度探索:解锁跨进程通信的无限可能,以管道与队列为翼,让你的应用跨越边界,无缝协作,震撼登场
【8月更文挑战第3天】Python IPC大揭秘:解锁进程间通信新姿势,让你的应用无界连接
28 0

相关实验场景

更多