[問題] 請問 Socket 的資料流接收, Buffer 的問題

看板C_Sharp (C#)作者 (難得一身雞蛋糕...)時間18年前 (2007/07/26 09:59), 編輯推噓3(303)
留言6則, 3人參與, 最新討論串1/3 (看更多)
各位好... 小弟最進寫了一個 Socket 的 Client 連線程式... 讀取的部份列如下: ---- // m_Client 及 m_NetworkStream 都是物件的成員. // 型別為 TcpClient & NetworkStream // 而且在之前都已經初始化完成 int BufSize = m_Client.ReceiveBufferSize; byte[] RecvBuf = new byte[BufSize]; m_NetworkStream.Read(RecvBuf, 0, BufSize); // 到此為止已經把資料接收的部份完成, 再來是資料的寫檔... FileStream FileStr = new FileStream(@"E:\Test.txt", FileMode.Create); FileStr.Write(RecvBuf, CurPos, Recved); ---- 這程式本身是沒有什麼問題... 也很順利的接收到資料... 但是它只能收到小於 Buffer Size 的資料... (程式第一行) 超過這個 Buffer Size (8192) 他就收不到了... 請問有什麼解決之道嗎... ^^" __yroj -- 一個屬於資訊人、軟體工作者的討論園地 <Soft_Job版 歡迎你的加入喔> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.5.97

07/26 11:40, , 1F
while(m_NetworkStream.DataAvailable){}包住Read()吧
07/26 11:40, 1F

07/26 11:42, , 2F
囧 Buffer Size還要處理
07/26 11:42, 2F

07/26 11:59, , 3F
我之前也是用類似的方用 while loop. 但是讀取資料時
07/26 11:59, 3F

07/26 11:59, , 4F
會因讀取的位元數超過實際位元數而 exception 請問有解嗎?
07/26 11:59, 4F

07/26 12:38, , 5F
我記得read函數會回傳int 也就是讀到的 byte數
07/26 12:38, 5F

07/26 12:40, , 6F
可以用那個當讀取依據
07/26 12:40, 6F
文章代碼(AID): #16g00DmX (C_Sharp)
文章代碼(AID): #16g00DmX (C_Sharp)