mail.cpp
来自「这是操作系统的上机资料,关于邮件槽,其中包括客户方和服务方」· C++ 代码 · 共 71 行
CPP
71 行
#include "stdafx.h"
#include "mail.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR *argv[],TCHAR *envp[])
{
DWORD dwNextSize(0),dwMsgCount(0);
int nRetCode = 0;
static LPCTSTR c_szSlotName="\\\\.\\mailslot\\mymailslot"; //系统中mailslot的名称
HANDLE hSlot=CreateMailslot(c_szSlotName,//mailslot的名称
0, //消息的最大长度,0表示最大长度
MAILSLOT_WAIT_FOREVER,//等待输入时间,以毫秒计,0表示不等待,MAILSLOT_WAIT_FOREVER表示等待
0);//默认安全性
if(hSlot!=INVALID_HANDLE_VALUE)
{
while(true)
{
//查看当前的状态
if(GetMailslotInfo(
hSlot, //邮件槽的句柄
NULL, //指定用于装载邮件槽的最大消息长度
&dwNextSize, //用于装载下一条消息的长度
&dwMsgCount, //用于装载邮件槽中准备好的消息数量
NULL)) //指定的默认阅读超时门限
{
if(dwMsgCount>0)
{
char *szBuffer=new char[dwNextSize+1]; //创建一个新的缓冲区
DWORD dwRead(0);
if(ReadFile(
hSlot, //获得的邮件槽的句柄
szBuffer, //数据缓冲区
dwNextSize, //缓冲区的长度
&dwRead, //指向读入的数据的指针
NULL)) //同步的读
{
//从队列中消除消息
szBuffer[dwRead]='\0';
std::cout<<szBuffer<<std::endl;
}
delete []szBuffer;
szBuffer=NULL;
}
else
{Sleep(100);} //暂停
}
}
}
//消除对象
CloseHandle(hSlot);
hSlot=INVALID_HANDLE_VALUE;
return nRetCode;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?