跳至內容

郵槽

出自Taiwan Tongues 台語維基
於 2025年8月22日 (五) 18:53 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

郵槽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