我正在使用TcpClient
內置的網絡協議,使用BinaryReader
從底層NetworkStream
(反過來說,使用BinaryWriter
寫入)讀取字節。TcpClient通過NetworkStream傳輸的字節BinaryReader/BinaryWriter
協議以UTF-8編碼傳輸字符串,並呼叫reader.ReadString()
從流中讀取它們(使用writer.Write(someStr)
進行寫入)。
是否有一種簡單的方法來確定從NetworkStream中讀取(或寫入)的字節數,而不必跳過箍環來計算字符串的實際字節長度?
請注意,BinaryWriter.Write()
在字符串的實際字節之前寫入一個7位編碼的整數,這使得任何手動計算都變得更加複雜。
另請注意,NetworkStream
不支持Position
屬性,因爲它抱怨無法使用Seek
。
此外,我想避免介紹必須將數據複製/掃描到讀/寫過程中的中介,以免影響整個系統的性能。
是否有簡單,通過網絡接口計數字節的高級方法,而無需手動計算字符串的編碼和長度?
你想做什麼?您可以在網絡流和讀取器之間插入一個自定義流來計算字節數。 – usr
@usr我只需要知道讀取/寫入的總字節數 - 用於報告目的。 *底層協議堆棧中的某些內容必須知道發送/接收的字節數......我想用最少的麻煩來獲取這些信息。 – Optimax