1、邮槽
1)什么是邮槽?
邮槽是一种简单的单向通信机制。通过邮槽,客户机进程可将消息传送或广播给一个或多个服务器进程。在同一台计算机的不同进程之间,或在跨越整个网络的不同计算机的进程之间,协助进行消息的传输。
2)邮槽的优点:简单,非常容易地将消息广播给一个或多个服务器。
缺点:只允许客户机到服务器,数据是不可靠的。
示例程序:
服务器端:
#include "stdafx.h"
#include <windows.h>
int main(int argc, char* argv[])
{
HANDLE MailSlot;
char Buffer[256];
DWORD NumberOfBytesRead;
memset(Buffer,0,256);
if((MailSlot = CreateMailslot(".//Mailslot//MySlot",0,
MAILSLOT_WAIT_FOREVER,NULL)) == INVALID_HANDLE_VALUE)
{
printf("Failed to create mailslot/n");
return 0;
}
while(ReadFile(MailSlot,Buffer,256,&NumberOfBytesRead,NULL)!=0)
{
printf("%s/n",Buffer);
memset(Buffer,0,256);
}
return 0;
}
客户端:
#include "stdafx.h"
#include <windows.h>
#include <process.h>
int main(int argc, char* argv[])
{
HANDLE MailSlot;
DWORD BytesWritten;
char ServerName[256] = ".//Mailslot//MySlot";
if((MailSlot = CreateFile(ServerName,GENERIC_WRITE,
FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,
NULL))==INVALID_HANDLE_VALUE)
{
printf("Create MailSlot failed/n");
}
if(WriteFile(MailSlot,"Test MailSlot msg",sizeof("Test MailSlot msg"),
&BytesWritten,NULL) == 0)
{
printf("Write to MailSlot failed/n");
}
printf("Wrote %d Bytes to MailSlot/n",BytesWritten);
system("PAUSE");
return 0;
}