2011-06-27 44 views
4

爲什麼命名管道對於本地Windows機器上的UDP更適用於IPC(進程間通信)?或UDP有時可能會更好?命名管道與Windows上IPC的UDP對比

+1

TCP很好,不可靠的傳輸機制對IPC沒有用處。 –

+0

請你能解釋一下你的意思嗎? – MajesticRa

+0

你首先解釋你爲什麼要使用UDP。 –

回答

5

即使在本地主機上的UDP數據包也可能丟失。而且,由於UDP是基於數據報的並且沒有保證的傳送,所以很難傳送更大的數據塊。最後,localhost上的UDP有時被瀏覽器阻止。一般來說,UDP通常不被考慮用於單電腦IPC。

在Windows上,我推薦使用內存映射文件+同步原語作爲最快也可能是最簡單的方法。命名管道通常在您管理它們工作時運行良好,但我在這裏看到很多關於如何使命名管道工作的問題(我還沒有看到關於MMF的單一投訴)。

我們有一個產品MsgConnect,它提供基於套接字,UDP和MMF的傳輸,適用於本地或跨網絡的IPC,所以我對此主題有實際經驗。命名的管道被認爲是支持的,但隨後這個想法被拋棄,轉而採用其他機制。

+0

非常感謝您的回答! – MajesticRa

+0

對於IPC而言,命名管道比存儲器映射文件簡單可靠,更靈活。命名管道功能內置於.NET環境中,易於使用。命名管道允許您將服務器或客戶端移動到網絡上的任何其他計算機。有了內存映射文件,您必須管理同步,如果您決定需要將客戶端或服務器移動到另一臺計算機,則必須從頭開始重寫IPC代碼。 –