2013-02-26 77 views
0

我正在編寫C客戶機 - 服務器應用程序。C - 通過TCP發送緩衝區的合適大小

雙方爲了溝通交換字符緩衝區。

這些緩衝區的大小是多少?
在面向流的套接字上是否存在read()(或write())可讀(或可寫)的字節數限制?

回答

2

只要您正確編寫代碼,只要保持連接就沒有限制。這就是流連接的含義。

只要記住write()read()都可以在它們寫入/讀取您提供/詢問的所有數據之前返回。在這種情況下,返回值告訴你已經寫/讀了多少,並且你有責任再次調用函數來進行寫/讀操作。

2

這取決於您是否瞄準高吞吐量或低延遲。高吞吐量的大緩衝區和低延遲的小緩衝區。還要注意的是,當發送帶有x字節的緩衝區時,讀寫功能不保證發送所有的x字節。確保檢查返回值,看看有多少個字節被髮送/接收,繼續發送/接收剩餘的數據(這通常是用一個while循環完成的,直到您發送/接收整個緩衝區大小x爲止)。