2012-08-17 32 views
2

有人在發送小塊數據(幾個字節)時知道Unix套接字的緩衝特性嗎?當使用TCP套接字時,我可以禁用Nagle算法來防止數據傳輸中的延遲,但沒有等效(我知道的)Unix域套接字的功能。Unix套接字的緩衝特性

謝謝。

回答

4

unix域套接字上沒有可用的nagle算法。

Unix套接字通常作爲操作系統內核中的內存緩衝區來實現。在套接字上寫入/發送數據後,它將被複制到該緩衝區中,並立即變爲可用於對等體。

+2

對。雖然在POSIX中沒有詳細說明它的速度。這是系統特定的。例如,Linux確保您立即獲取數據:如果您在非阻塞套接字上調用'write',然後立即「讀取」另一端,它會承諾返回數據。我沒有閱讀所有常見unix的文檔,但是我已經編寫了這個假設的代碼,並且它在Solaris,Darwin,AIX,FreeBSD和HP-UX上運行良好,所以依賴它似乎是安全的。如果我錯了,請糾正我! – 2012-08-17 17:31:00

+0

@NicholasWilson我看不出有什麼理由說明爲什麼寫入的數據不能立即在任何平臺上使用。 – EJP 2012-08-18 09:39:39