C++进程通信之邮槽

来源:互联网 发布:java hashmap stream 编辑:程序博客网 时间:2024/05/21 02:21

邮槽是基于广播通信体系设计出来的,它采用无连接的不可靠的数据传输。

邮槽是一种单向通信机制,创建邮槽的服务器进程读取数据,打开邮槽的客户端写入数据。

邮槽可以实现一对多的单向通信。但是数据量小,通常都是424字节以下。


一、服务器端程序

void CMailSlotSrcView::OnMailRecv(){HANDLE hMailSlot;//用来保存将要创建的邮槽句柄//创建邮槽hMailSlot = CreateMailslot("\\\\.\\mailslot\\MyMailSlot", //圆点表示本地机器,可以改为服务器所在机器的名称,实现网络间进程的通信0, MAILSLOT_WAIT_FOREVER, NULL);if (INVALID_HANDLE_VALUE == hMailSlot){MessageBox("创建邮槽失败!");return;}//从邮槽读取数据char buf[100];DWORD dwRead;if (!ReadFile(hMailSlot, buf, 100, &dwRead, NULL)){MessageBox("读取数据失败!");CloseHandle(hMailSlot);return;}MessageBox(buf);CloseHandle(hMailSlot);}


二、客户端程序

void CMailSlotClientView::OnMailSend(){//打开邮槽HANDLE hMailSlot;//用来保存将要打开的邮槽句柄hMailSlot = CreateFile("\\\\.\\mailslot\\MyMailSlot", GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);if (INVALID_HANDLE_VALUE == hMailSlot){MessageBox("打开邮槽失败!");return;}//向邮槽写入数据char buf[] = "dadadadakai";DWORD dwWrite;if (!WriteFile(hMailSlot,buf, strlen(buf)+1, &dwWrite, NULL)){MessageBox("写入数据失败!");CloseHandle(hMailSlot);return;}CloseHandle(hMailSlot);}


0 0