我知道如果你想从netstream中读取x字节:

netStream.Read(buffer, 0, X);

在所有情况下都是不够的,因为read可能只返回x的一部分,所以需要循环直到read字节的数量等于x。
然而,另一个示例将netstream包装在二进制阅读器br中,然后继续执行以下操作:
br.Read(buffer, 0, X);

我的问题是:
这是否有效,因为netstream现在由一个binaryreader包装,或者我们仍然需要考虑到read可能不会返回所有的x字节和循环,就像从原始netstream读取一样?

最佳答案

BinaryReader.Read(byte[], int, int)只是将调用转发到底层流。语义相同。但是,对于这个场景,还有一个helper方法BinaryReader.ReadBytes(int)读取特定数量的字节,因此您不必跟踪自己读取了多少字节。

10-05 21:50