作者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
1F:推 juriolegend:while(m_NetworkStream.DataAvailable){}包住Read()吧 07/26 11:40
2F:→ juriolegend:囧 Buffer Size还要处理 07/26 11:42
3F:推 KENyroj:我之前也是用类似的方用 while loop. 但是读取资料时 07/26 11:59
4F:→ KENyroj:会因读取的位元数超过实际位元数而 exception 请问有解吗? 07/26 11:59
5F:推 del680202:我记得read函数会回传int 也就是读到的 byte数 07/26 12:38
6F:→ del680202:可以用那个当读取依据 07/26 12:40