// 005_邮槽_服务端.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <windows.h>
#include <stdio.h>
int main()
{
// 1. 创建一个_邮槽_服务端
HANDLE hMailslot;
// '\\\\.\\' 表示当前主机, 如果想要连接到其它主机
// 可以将.换成ip地址.
// mailslot - 邮槽的关键字
hMailslot = CreateMailslot(
L"\\\\.\\mailslot\\韦老师的邮槽",
0,
-1,
NULL);
// 建立死循环来等待其它进程将信息投递到邮槽
DWORD msgSize = 0;
DWORD nextMsgSize = 0;
DWORD msgCount = 0;
DWORD readTimeout =0;
BOOL ret = 0;
while ( 1 )
{
// 等待邮槽的消息
ret=GetMailslotInfo(hMailslot,
&msgSize,/*消息的字节数*/
&nextMsgSize,/*下一条消息的字节数*/
&msgCount,/*邮槽里面总共有几条消息*/
&readTimeout/*读取消息的超时时间*/);
if ( !ret) {
continue;
}
if ( msgCount == 0) {
Sleep(100);
continue;
}
// 知道了邮槽里面的消息占多少字节之后
// 就可以申请堆空间
// 来将邮槽内的信息读取出来.
char* pBuff = new char[nextMsgSize + 1];
memset(pBuff, 0, nextMsgSize + 1);
// 使用ReadFile来读取邮槽里面的内容
ReadFile(hMailslot, pBuff, nextMsgSize, &msgSize, 0);
printf("服务端> %s\n", pBuff);
delete[] pBuff;
}
}