我已經看到多個應用程序首先將它們的數據寫入緩沖區,然后將該緩沖區寫入 socket而不僅僅是直接寫入 socket。我有兩個問題:這是為什么?如果直接寫入套接字是合理的,那么:如何讓套接字等待更多數據(我們在這里處理微秒/納秒延遲)或者如何明確告訴套接字 發送(不寫入內部緩沖區)數據?,F在內核正在發送我在單獨數據包中寫入的每個字節,這顯然不是最佳的;)我在Go中制作我的應用程序,這里net.Conn實現了 io.Writer并且創建帶有2 個參數的實用函數是有意義的:writer 本身和正在寫入的數據,所以最后我可以輸入它并且很高興:packets.WriteUint8(conn, 0x0)我知道在許多語言中,緩沖區都有自己的實用方法來寫入/讀取結構,但是如果我想專門在 Go 中嘗試上述方法怎么辦?我試過尋找類似的問題,但失敗了。信息:應用程序旨在在 Linux 上運行
1 回答

夢里花落0921
TA貢獻1772條經驗 獲得超6個贊
應用程序緩沖寫入網絡連接,因為使用大緩沖區的單個寫入調用比使用小緩沖區的多個寫入調用更有效。
調用SetNoDelay (false)使操作系統延遲數據包傳輸,希望減少數據包的數量。
沒有顯式刷新 TCP 連接緩沖區的選項。
在編寫您自己的實用程序之前,請查看bufio.Writer類型。許多應用程序使用這種類型來緩沖對 TCP 連接和文件的寫入。
- 1 回答
- 0 關注
- 120 瀏覽
添加回答
舉報
0/150
提交
取消