我的服務器將使用networkStream.Write(messageBytes)發送消息;所有數據寫入前的網絡流讀取
我的客戶端將使用networkStream.Read()接收消息。客戶端將逐字節地讀取一個序列,當它找到它讀取頭部其餘部分的序列時。
頭部包含有效載荷長度。一旦我有了這個,我使用有效載荷長度讀取流來獲得有效載荷。
我的問題是,當我寫入數據時,我的客戶端會嘗試立即讀取,並且所有數據可能沒有被寫入。
所以我結束了與結束的消息有效砍掉:
「blablablablabl \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0「
無論如何要等待所有的信息被接收?
謝謝。
好的,所以不要讀取標題信息,獲取有效載荷長度,然後進行讀取(並非所有內容都已經進入)。 有一些邏輯檢查有效載荷長度是否比讀入的長度大,然後等待? – mitchellt
沒錯。你會有一個循環,像'while(bytesReceived
非常感謝你,我已經有這個問題好幾天了,只是意識到是什麼導致了它。 – mitchellt