一 郵槽 服務(wù)器端
HANDLE handle=CreateMailslot("\\\\.\\mailslot\\MyMailslot",0,MAILSLOT_WAIT_FOREVER,NULL);
if(INVALID_HANDLE_VALUE==handle)
{
MessageBox("創(chuàng )建郵槽失??!");
return ;
}
char buf[100];
DWORD dword;
if(!ReadFile(handle,buf,sizeof(buf),&dword,NULL)) // ReadFile 會(huì )發(fā)生阻塞,可以把這個(gè)函數弄到線(xiàn)程中去
{
MessageBox("讀取失敗!");
CloseHandle(handle);
return ;
}
MessageBox(buf);
CloseHandle(handle);
二 郵槽 客戶(hù)端
HANDLE handle;
handle=CreateFile("\\\\.\\mailslot\\MyMailslot",GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
// 通過(guò) CrateFile 這個(gè)函數來(lái) 打開(kāi)郵槽
//設為OPEN_EXISTING。若一臺機器既是客戶(hù)機,也是服務(wù)器,這一設置便顯得尤其重要 ----如果服務(wù)器沒(méi)有創(chuàng )建郵槽,對API函數CreateFile的調用便會(huì )失敗.如果服務(wù)器在遠程工作,那 /////么.dwCreationDisposition參數便沒(méi)什么意義
if(INVALID_HANDLE_VALUE==handle)
{
MessageBox("打開(kāi)郵槽失??!");
return ;
}
char * buf="sdfsdfsdff";
DWORD dword;
if(!WriteFile(handle,buf,strlen(buf)+1,&dword,NULL))
{
MessageBox("寫(xiě)數據失??!");
CloseHandle(handle);
return ;
}
------------------------------------------------------
上面的郵槽 是在 本地進(jìn)程之間通信 \\\\. 代表 是本地
如果想實(shí)現在局域網(wǎng)中 一個(gè)client 發(fā)送給 所有的 server
server 端 創(chuàng )建郵槽的時(shí)候 使用
HANDLE handle=CreateMailslot("\\\\.\\mailslot\\MyMailslot",0,MAILSLOT_WAIT_FOREVER,NULL);
if(INVALID_HANDLE_VALUE==handle)
client 端 通過(guò)CreateFile 來(lái)打開(kāi)郵槽
handle=CreateFile("\\\\*\\mailslot\\MyMailslot",GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
這樣一個(gè)客戶(hù)端發(fā)送文件后 就會(huì )以廣播的放松發(fā)送給所有的 server端