我试图在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);
二进制读取器是您所需要的,因为它确切地知道要读取多少字节!
它以字节的长度为前缀,因此它知道要读取多少!