我正在處理客戶端服務器應用程序。我的應用程序正在處理可變大小的數據包,每個數據包都有一個頭部和一個可變長度的有效載荷Recv環形緩衝區vs簡單緩衝區
我的困境是什麼是在recv時處理數據包的最佳方法。 我遇到的大多數教程都建議使用環形緩衝區,但據我所知,使用緩衝區的效率更高,因爲緩衝區的大小是您可以處理的最大數據包大小的兩倍。
如果我使用環形緩衝器我需要的recv附加的緩衝,然後我需要緩衝器複製在環形緩衝器,這意味着我需要做一個或兩個memcpys插入緩衝器在環形緩衝器
如果我使用單緩衝區方法,則只需要一個緩衝區,我可以將它傳遞給recv調用,當memoove調用將數據移動到緩衝區的起始處時,當我得到一個完整的數據包時,仍然有數據屬於另一個數據包緩衝。
我錯了嗎?
PS。如果您可以指向任何源代碼/示例,其中處理可變長度數據包將有所幫助。
這是TCP還是UDP? – 2012-03-19 17:42:20
@KarolyHorvath它的TCP – 2012-03-19 17:47:16
爲什麼投票? – 2012-03-19 18:35:49