是否可以在同一基础NetworkStream上同时使用BinaryReader和BinaryWriter
(我的目标是通过TcpClient连接同时发送和接收数据)
到目前为止,我遇到了两个相关的文章:
One引用了NetworkStream docs:
second引用了BinaryReader docs:
我不确定100%如何解释这些引号,也不确定上述2种情况中的哪一种是可能的。
最佳答案
简短的回答是"is"。 NetworkStream
本质上充当双工流,读操作与写操作完全分开。 BinaryReader
将仅使用读取操作,而BinaryWriter
将仅使用写入操作。像Length
,Position
和Seek
这样的概念在NetworkStream
上没有意义,因此不受支持。因此:在这里使用BinaryReader
/BinaryWriter
应该不会有冲突。但是,与此同时,我可能会建议您不要使用它们-仅仅是因为与使用原始Stream
操作相比,它们通常实际上并没有增加太多,并且与任意网络协议(protocol)都不兼容。如果您要实现只使用您的代码的自定义项:当然,您可能会没事的。
关于在使用Stream
/BinaryReader
时触摸BinaryWriter
的警告仍然非常适用于其他一些流-例如FileStream
:您可以通过在读取器/写入器认为它负责的情况下重新定位流来微不足道地破坏数据-并且由于存在单一位置:这意味着读取将影响写入等。但是:这根本不适用于NetworkStream
。在这方面:NetworkStream
是异常(exception),而不是规则:就您通常对Stream
的期望而言,NetworkStream
非常不寻常。
关于c# - 通过NetworkStream的BinaryReader和BinaryWriter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49251939/