1. // 005_邮槽_服务端.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    2. //
    3. #include <windows.h>
    4. #include <stdio.h>
    5. int main()
    6. {
    7. // 1. 创建一个_邮槽_服务端
    8. HANDLE hMailslot;
    9. // '\\\\.\\' 表示当前主机, 如果想要连接到其它主机
    10. // 可以将.换成ip地址.
    11. // mailslot - 邮槽的关键字
    12. hMailslot = CreateMailslot(
    13. L"\\\\.\\mailslot\\韦老师的邮槽",
    14. 0,
    15. -1,
    16. NULL);
    17. // 建立死循环来等待其它进程将信息投递到邮槽
    18. DWORD msgSize = 0;
    19. DWORD nextMsgSize = 0;
    20. DWORD msgCount = 0;
    21. DWORD readTimeout =0;
    22. BOOL ret = 0;
    23. while ( 1 )
    24. {
    25. // 等待邮槽的消息
    26. ret=GetMailslotInfo(hMailslot,
    27. &msgSize,/*消息的字节数*/
    28. &nextMsgSize,/*下一条消息的字节数*/
    29. &msgCount,/*邮槽里面总共有几条消息*/
    30. &readTimeout/*读取消息的超时时间*/);
    31. if ( !ret) {
    32. continue;
    33. }
    34. if ( msgCount == 0) {
    35. Sleep(100);
    36. continue;
    37. }
    38. // 知道了邮槽里面的消息占多少字节之后
    39. // 就可以申请堆空间
    40. // 来将邮槽内的信息读取出来.
    41. char* pBuff = new char[nextMsgSize + 1];
    42. memset(pBuff, 0, nextMsgSize + 1);
    43. // 使用ReadFile来读取邮槽里面的内容
    44. ReadFile(hMailslot, pBuff, nextMsgSize, &msgSize, 0);
    45. printf("服务端> %s\n", pBuff);
    46. delete[] pBuff;
    47. }
    48. }