如何知道流已经结束C#

  • 本文关键字:结束 何知道 c# stream
  • 更新时间 :
  • 英文 :


我试图在C#中接收一个tcp数据包,但我不知道什么时候才能停止从流中读取。以下是我尝试过的:

for(int i = 0; i < stm.Length; i += chunkSize)
{
    bb = new byte[chunkSize];
    k = stm.Read(bb, 0, bb.Length);
    ns.Write(bb, 0, k);
}

但它给我带来了一个错误,那就是流是找不到的。所以我试过这个:

int k = chunkSize;
while (k == chunkSize)
{
    bb = new byte[chunkSize];
    k = stm.Read(bb, 0, bb.Length);
    ns.Write(bb, 0, k);
}

有什么事要做吗?感谢:)

开始:

int read;
while((read = stm.Read(bb, 0, bb.Length)) > 0) {
    // process "read"-many bytes from bb
    ns.Write(bb, 0, read);
}

"read"在流的末尾将是非正的,并且仅在流的结尾。

或者更简单地(在4.0中):

stm.CopyTo(ns);

二进制读取器是您所需要的,因为它确切地知道要读取多少字节!

它以字节的长度为前缀,因此它知道要读取多少!

相关内容

  • 没有找到相关文章

最新更新