进程(三)邮槽

定义

邮槽也是一个内核对象

使用邮槽进行通信的进程也分为客户端和服务端,邮槽由服务端创建,邮槽通信是单向的,只有服务端才能从邮槽中读取消息,客户端只能写入消息,每条消息不能超过424字节,邮槽可以进行网络通信

代码

1.在进程Processcommunity和Processcommclient各自定义两个按钮

 2.在服务端的接收按钮编程

void CProcesscommunityDlg::OnBnClickedButtonrecv()
{
	/创建一个邮槽
	LPCTSTR szSlotName = TEXT("\\\\.\\mailslot\\Mymailslot");  /邮槽名
	HANDLE hSlot = CreateMailslot(szSlotName,   //第一个参数为 名字
		0,                       / 消息大小
		MAILSLOT_WAIT_FOREVER,   /  读取时间,永远阻塞在这里,直到读到数据为止
		NULL );                 /安全属性

读取消息

    char szBuff[100]{};
	DWORD dwRead;   /实际读取的个数
	if (!ReadFile(hSlot,szBuff,100,&dwRead,NULL))
	{
		MessageBox("Read failed");
		return;
	}
	TRACE("dWREAD==%d\n", dwRead);  /打印实际长度
	MessageBox(szBuff);

 3.在客户端写入按钮编程

void CProcesscommclientDlg::OnBnClickedButtonsend()
{
	LPCTSTR szSlotName = TEXT("\\\\.\\mailslot\\Mymailslot");/
                邮槽名必须一样
	HANDLE hMailSlot =
CreateFile(szSlotName, FILE_GENERIC_WRITE,
    FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

第二个参数表示可写,第三个表示可共享

char szBuff[100]="woshizhui";
	DWORD dwwrite;
	if (!WriteFile(hMailSlot, szBuff, strlen(szBuff+1), &dwwrite, NULL))
	{
		MessageBox("WRITE failed");
		return;
	}
	CloseHandle(hMailSlot);

这样,就能通过邮槽进行两个进程之间的通信。感觉和TCP 客户端服务端那个差不多,不过少了很多代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值