什么是“从当前流中读取一个字符串。字符串有长度前缀,一次 7 位地被编码为整数。”

来探索一下:

写一段简单的程序:

FileStream fs= new FileStream("d:\\qqq.txt",FileMode.Create);
          var bw = new BinaryWriter(fs, Encoding.UTF8);//通常情况下可以不写编码 这里加上便于理解
          bw.Write("hello world!");
          Console.WriteLine("成功写入");
          bw.Close();
          fs.Close();

FileStream fs2 = new FileStream("d:\\qqq.txt", FileMode.Open);
          var br = new BinaryReader(fs, Encoding.UTF8);
          Console.WriteLine(br.ReadString());

1.在写入文件的时候指定或默认编码,这样字符就可以转换为字符集对应编码(ASCII 八进制 十六进制)

传输或者保存的时候就会保存为相应的标准可传输的进制(再从这些进制转到二进制,网络传输用二进制)

2.用编辑器打开时,默认的会给我们转到10进制,转成字符集所对应的显示文字。(计算机很聪明 做事很得体 妹子都喜欢这样的男朋友吧)

ps:

来看下刚才写得qqq.txt文件,

用UE查看 开头)16进制 0C = 10进制 12,正好是字符长度.

来看一下 BinaryWriter.Write

读写遥相呼应,配合使用。

其他的重载也是一样的用法。

==================================进阶研究==================================

byte[] buffer = new byte[512];
                       while ((size = netstream.Read(buffer, 0, buffer.Length))>0)
                       {
                           fs.Write(buffer, 0, size);
                           len += size;
                       }

var br = new BinaryReader(netstream);
Console.WriteLine(br.ReadString());

从同一个stream上取数据这两个方法 得到结果却不一样, 为什么呢?

Read 只会返回byte[]数据对象,  readstring 只能得到BinaryWriter进去的数据。

BinaryWriter 不写入内容时 readstring为何会出现乱码?

来试验几种情况

在不写BinaryWriter  情况下,接收端处理 readstring 将会把开头部分数据读到readstring中,剩余数据被read读出来。

传输开始后 netstream将会被监听

发送端加了using后  都不需要关心服务端 接收到的bytes 长度是否大于0,(猜想传输监听有两种方法1通过是否还有数据传过来,2.close、dispose状态的级别更高,直接关闭掉)

【netstream】探索数据传输对象1的更多相关文章

  1. ABP(现代ASP.NET样板开发框架)系列之16、ABP应用层——数据传输对象(DTOs)

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之16.ABP应用层——数据传输对象(DTOs) ABP是“ASP.NET Boilerplate Project ...

  2. 应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较

    本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行比较. 领域实体为何不能一统江湖? 当你阅读 ...

  3. 为什么需要DTO(数据传输对象)

    DTO即数据传输对象.之前不明白有些框架中为什么要专门定义DTO来绑定表现层中的数据,为什么不能直接用实体模型呢,有了DTO同时还要维护DTO与Model之间的映射关系,多麻烦. 然后看了这篇文章中的 ...

  4. 我们为什么需要DTO(数据传输对象)

    原文:http://www.cnblogs.com/Gyoung/archive/2013/03/23/2977233.html DTO即数据传输对象(Data Transfer Object).之前 ...

  5. ABP应用层——数据传输对象(DTOs)

    ABP应用层——数据传输对象(DTOs) 基于DDD的现代ASP.NET开发框架--ABP系列之16.ABP应用层——数据传输对象(DTOs) ABP是“ASP.NET Boilerplate Pro ...

  6. 数据传输对象(DTO)介绍及各类型实体比较

    数据传输对象(DTO)介绍及各类型实体比较 本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行 ...

  7. ABP官方文档翻译 4.3 校验数据传输对象

    校验数据传输对象 校验简介 使用数据标注 自定义校验 禁用校验 标准化 校验简介 应用的输入首先应该被校验.输入可以是用户的也可以是其他应用的.在一个web应用中,校验通常实现两次:客户端和服务端.客 ...

  8. ABP官方文档翻译 4.2 数据传输对象

    数据传输对象 DTOs的必要性 领域层的抽象 数据隐藏 序列化和懒加载问题 DTO转换和验证 示例 DTOs和实体间的自动映射 辅助接口和类 数据传输对象用来在应用层和展示层之间传输数据. 展示层调用 ...

  9. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十二 || 三种跨域方式比较,DTOs(数据传输对象)初探

    更新反馈 1.博友@落幕残情童鞋说到了,Nginx反向代理实现跨域,因为我目前还没有使用到,给忽略了,这次记录下,为下次补充.此坑已填 2.提示:跨域的姊妹篇——<三十三║ ⅖ 种方法实现完美跨 ...

随机推荐

  1. Node.js学习笔记(1)

    Node是用c++语言开发,能运行javascript语言的环境. 使用的时候格式为node helloworld.js,helloword.js为服务器端或者系统级端的javascript代码. N ...

  2. Strom实现单词统计代码

    import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.HashM ...

  3. 初识 Asp.Net内置对象之Application对象

    Application对象 Applocation对象用于共享应用程序级信息,即多个用户可以共享一个Applocation对象. 用户在请求Asp.Net文件时,将启动应用程序并且创建Applicat ...

  4. nginx二级域名配置

    CentOs下nginx二级域名配置 域名配置文件 命名规则:XXX.域名信息.conf 配置文件路径:etc/nginx/conf.d/xxxx.conf 配置文件内容:server { liste ...

  5. Table of Contents - HttpClient

    HttpClient 4.3.5 Getting Started HttpClient 简单示例 Fundamentals Request Execution HTTP Request & H ...

  6. .NET DLL 保护措施详解(四)各操作系统运行情况

    我准备了WEB应用程序及WinForm应用程序,分别在WIN SERVER 2012/2008/2003.Win7/10上实测,以下为实测结果截图: 2012 2008 2003 WIN7 WIN10 ...

  7. 增强for循环用法___ArrayList数组实现使用下标最好,LinkedList使用增强型的(转载)

    总结: 1.For-Each循环的缺点:丢掉了索引信息. 当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息. ...

  8. 网络请求的null值处理

    最近项目中经常有遇到从服务器请求的数据是null的情况,这种情况下如果用[dic objectForKey:@"key"]方法,程序会发生崩溃现象,因为项目是以前的老项目,而且有太 ...

  9. 第三方框架、AFN、ASI、SDWebImage

    AFN 一.2大管理对象1.AFHTTPRequestOperationManager* 对NSURLConnection的封装 2.AFHTTPSessionManager* 对NSURLSessi ...

  10. vs2010工具栏 不显示dx控件

    进入命令提示符 跳转到Dev控件安装目录,如目录D:\Program Files (x86)\DevExpress 2010.1\Components\Toolss下, 然后执行命令:ToolboxC ...