c# – 通过NetworkStream的BinaryReader和BinaryWriter
是否可以使用相同的底层NetworkStream同时使用BinaryReader和BinaryWriter
>使用单个线程顺序隔行扫描读写? (我的目标是通过TcpClient连接同时发送和接收数据) 到目前为止,我遇到了两个相关的帖子: One引用NetworkStream docs:
second引用了BinaryReader docs:
我不是100%肯定如何解释这些引用,我不确定我的2个案例中哪一个是可能的. 解决方法
“是”是简短的答案; NetworkStream本质上充当双工流,读取操作与写入操作完全分开. BinaryReader只会使用read操作,而BinaryWriter只会使用write操作.像Length,Position和Seek这样的概念在NetworkStream上没有意义,也不受支持.所以:这里使用BinaryReader / BinaryWriter应该没有冲突.但是,与此同时,我可能会建议不要使用它们 – 只是因为它们通常实际上并没有使用原始Stream操作增加太多,并且与任意网络协议不兼容.如果你正在实现一些只使用你的代码的自定义:你当然可能没事.
使用BinaryReader / BinaryWriter时触发Stream的警告仍然非常适用于其他一些流 – 例如FileStream:当读者/编写者认为它负责时,你可以通过重新定位流来轻易地破坏数据 – 并且因为有一个单一位置:这意味着读取会影响写入等.但是:这根本不适用于NetworkStream.在这方面:NetworkStream是例外,而不是规则:就你通常对Stream的期望而言,NetworkStream非常不寻常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |