郵槽
郵槽(MailSlot)是 Windows 作業系統提供的一種單向進程間通信機制,通用佇單機或者是網路頂懸的濟機分布式環境。
對相對無簡短的低頻率信息發送,使用郵槽通常是比號名的管道抑是 Unix 域套接字閣較簡單。如低頻率的狀態改變消息、做對等點發現協議(peer-discovery protocol)的一部份。郵槽機制允准短報文廣播予域頂頭的計算機中所有監聽的進程。
特性
郵槽是一種侍服器-客戶接口。侍服器創建郵槽,客戶會當向號名的郵槽寫入內容。干焦侍服器會使讀郵槽,因此郵槽是一種單向進程間通信機制。郵槽無提供報文已經收著的確認,因此是袂當靠通信。
郵槽基於 RPC 協議,會當佇仝一个網路頂懸跨計算機使用。
應用
Windows 批使服務是郵槽的上知名的應用。批使服務是一个郵槽侍服器,等待報文到位了後,就彈窗顯示佇屏幕頂。
郵槽的應用舉例 :
- MAILSLOT \ Messngr-微軟 ` NET SEND ` 協議
- MAILSLOT \ Browse-微軟網路厝邊頭尾共享資源瀏覽服務
- MAILSLOT \ Alerter
- MAILSLOT \ 五十三 cb 三十一 a 零 \ UnimodemNotifyTSP
- MAILSLOT \ HydraLsServer-Microsoft Terminal Services Licensing
- MAILSLOT \ CheyenneDS-CA BrightStor Discovery Service
實現
郵槽號名
郵槽的名,對形式上敢若類似文件。格式為 ` \ \ ComputerName \ mailslot \ [path] name ` 本地的郵槽名中的 ComputerName 使用 ` . ` 來代替,即 ` \ \ . \ MailSlot \ 路響 \ 文件名 `。若向當前發送計算機所在的工作組抑是域群發,會用得使用 ` * ` 做為 ComputerName。若共指定工課組抑是域群發,應當使用工作組或者是域名作為 ComputerName
本機的 Windows 的批使服務使用的郵槽名是 ` \ \ . \ MailSlot \ messngr `
郵槽報文內容
郵槽報文內容包含:接收日期、發送人啦、接收人、具體內容。發送人啦、接收人、具體內容三項內容之間使用字節值 ` 零 ` 閬隔。
創建郵槽
使用 ` CreateMailslot `
寫入報文去郵槽
就類似寫入普通文件,使用 ` CreateFile ` 拍開郵槽,使用 ` WriteFile ` 共內容寫入去。
嘛會使用 ` NetMessageBufferSend ` 直接發送。
讀取郵槽報文
使用 ` GetMailSlotInfo ` 來判斷郵槽內底敢有這个內容。發現有彼个內容的時陣,會用得使用 ` ReadFile ` 讀取。若是 ` ReadFile `
咧使用 MAILSLOT \ _ WAIT \ _ FOREVER 標誌的郵槽頂懸等待消息來到,這時郵槽雄雄中止運行,按呢這應用會去予永遠「掛起來」一直到重啟 Windows 系統。為此,讀郵槽的進程會使使用一个單獨執行緒執行讀掛起操作;主執行緒欲結束進程的時陣予一个全局標誌位置,閣予郵槽寫入去一條消息來喚醒讀郵槽執行緒。
` SetMailslotInfo ` 設置讀郵槽的超時值
例
參見
參考文獻
外部連結
- Mailslots ( MSDN Documentation )
- Using Mailslots for Interprocess Communication
- Using a Mailslot to read / write data over a network