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