看板 C_Sharp 關於我們 聯絡資訊
各位好... 小弟最進寫了一個 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