我正在寫一個小C程序來理解套接字。 recvfrom返回的數據的最大長度是多少?recvfrom最大緩衝區TCP/IP
recvfrom(raw,packet_buffer,buf_size,...);
linux中buf_size的最大值是多少?是否有與此size_t相關的常量?
感謝
我正在寫一個小C程序來理解套接字。 recvfrom返回的數據的最大長度是多少?recvfrom最大緩衝區TCP/IP
recvfrom(raw,packet_buffer,buf_size,...);
linux中buf_size的最大值是多少?是否有與此size_t相關的常量?
感謝
這不是一個真正的直接答案......對這個問題有些偏袒。對於TCP/IP,即使您確定系統上的最大大小,最好實施代碼以避免依賴該代碼。使用面向流的套接字,多餘的數據不會丟失。因此您可以再次調用接收函數來檢索剩餘的數據。儘管如此,對於面向消息的(UDP)連接,情況並非如此。
我認爲最大的65535
字節。它不依賴於MTU,因爲它本身是由協議棧來處理的......所以基本上你有一個很好的抽象,以便在網絡上發送有效的數據包。
2^16的選擇應該是這樣的,因爲它是TCP窗口的最大尺寸(通常它不是64kb,但更小):所以它是協議允許TCP連接的最大緩衝區。
不,它比這大得多,並且默認情況下是系統具有多少內存的函數。在大多數系統中,這幾天它只有幾兆字節。 – 2010-02-21 14:19:01
爲什麼不看內核源代碼?你可能不得不四處尋找,但答案就在那裏。 – 2010-02-21 14:18:18