在问了这个问题之后,写入TcpClient和NetworkStream似乎我必须写入另一个流,该流将在较小的流中读取,并继续进行,直到我得到我喜欢的大小(或直到错误/超时)。
有什么内置的吗?还是在受欢迎的第三方图书馆?我只想确保我的TCP读取长度足够大,可以在开始对其进行操作之前初始化结构或填充数组。所以我希望Read()在它准备好之前进行阻塞。当基础流(TCP)超时或在其他大小上关闭时,可能会引发异常。(或者是EOF,它将对文件IO流有用)。
我认为BinaryReader.ReadBytes()
正是您想要的。它返回的字节数可能少于请求的字节数,但根据文档,只有当流到达末尾时才会发生这种情况。