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

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