流的优点/缺点[读者/作家]

本文关键字:读者 作家 缺点 | 更新日期: 2023-09-27 18:29:49

所以一段时间以来,我一直在使用StreamReader/Writer作为TcpClient的NetworkStream的包装器-主要是为了简单和节省时间。

当在连接的两端使用流读取器/写入器时,它工作得很好,但我注意到,当使用这些助手类中的一个端点时,却没有同时使用助手类,奇怪的事情就会开始发生。为流准备的额外字节和其他奇怪的东西。

这让我思考,也许使用这些包装器会有一些不需要的开销?或者在用C++或PHP等其他语言开发客户端时可能存在兼容性问题。

使用StreamReader和StreamWriter帮助程序类有什么含义,有什么好处吗?(沿着错误处理或其他任何事情的路线)

流的优点/缺点[读者/作家]

StreamReader/Writer使您可以轻松地将文本数据存储到流中/从流中读取文本数据。除了它们的作用之外,没有额外的开销——将值转换为正确编码的文本表示。只要双方在编码上达成一致,使用其他语言的文本流应该不会有问题——也就是说,其中一种是带有BOM的默认UTF-8。

"Extraneous bytes prepended"是字节顺序标记(BOM),您可以在构建读取器时关闭它(它仅适用于Unicode UTF-8/7/16编码)。

根据您的目标,使用原始流进行二进制通信可能会更好/更快。

我假设您正在使用ReadLine和WriteLine,并看到不一致的结果。

首先,StreamReader采用UTF-8字符,这可能不是从另一端发送的字符。您可以在创建StreamReader时设置编码。

第二,StreamReader假定行以''n、''r''n或''r''n结尾,这意味着如果另一端以''n''r形式发送换行符,则会引起奇怪。

第三,是的,StreamReader有一些开销,因为它必须缓冲输入以查找换行符。但如果没有这一点,就很难找到新的生产线。