作者KENyroj (難得一身雞蛋糕...)
看板C_Sharp
標題[問題] 請問 Socket 的資料流接收, Buffer 的問題
時間Thu Jul 26 09:59:39 2007
各位好... 小弟最進寫了一個 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
推 juriolegend:while(m_NetworkStream.DataAvailable){}包住Read()吧 07/26 11:40
→ juriolegend:囧 Buffer Size還要處理 07/26 11:42
推 KENyroj:我之前也是用類似的方用 while loop. 但是讀取資料時 07/26 11:59
→ KENyroj:會因讀取的位元數超過實際位元數而 exception 請問有解嗎? 07/26 11:59
推 del680202:我記得read函數會回傳int 也就是讀到的 byte數 07/26 12:38
→ del680202:可以用那個當讀取依據 07/26 12:40