加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 通过NetworkStream BinaryReader / BinaryWriter计算TcpCl

发布时间:2020-12-15 22:24:04 所属栏目:百科 来源:网络整理
导读:我正在使用围绕TcpClient构建的网络协议,使用BinaryReader从底层NetworkStream读取字节(相反,使用BinaryWriter写入). 该协议以UTF-8编码传输字符串,并调用reader.ReadString()从流中读取它们(使用writer.Write(someStr)写入). 有没有一种简单的方法可以确定
我正在使用围绕TcpClient构建的网络协议,使用BinaryReader从底层NetworkStream读取字节(相反,使用BinaryWriter写入).

该协议以UTF-8编码传输字符串,并调用reader.ReadString()从流中读取它们(使用writer.Write(someStr)写入).

有没有一种简单的方法可以确定从NetworkStream读取(或写入)的字节数,而无需跳过箍来计算传输的字符串的实际字节长度?

请注意,BinaryWriter.Write()在字符串的实际字节之前写入一个7位编码的整数,这使得任何手动计算更加复杂.

另请注意,NetworkStream不支持Position属性,因为它抱怨无法搜索.

此外,我想避免引入必须将数据复制/扫描到读/写过程中的中介,以免影响整个系统的性能.

是否有一种简单,高级的方法来计算通过网络接口的字节数,而无需手动计算字符串的编码和长度?

解决方法

您可以在网络流和读取器之间插入自定义流来计算字节数.

没有必要复制数据来做到这一点.只需将传递的字节数添加到计数器即可.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读