• 【netstream】探索数据传输对象1


    image

    什么是“从当前流中读取一个字符串。字符串有长度前缀,一次 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,正好是字符长度.

    image

    来看一下 BinaryWriter.Write 

    image

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

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

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

    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为何会出现乱码?

    来试验几种情况

    image

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

     

    image

    传输开始后 netstream将会被监听

    image

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

    image

  • 相关阅读:
    Html Document窗口的尺寸和位置
    如何在浏览器窗口上添加一个遮罩层
    mysql用户管理
    微信开发者工具 一键格式化与快捷键大全
    lua脚本加密与解密、luaR、ssulua、DZSH算法
    关于蓝奏云网盘地址无法打开问题
    lua脚本中如何获取当前时间与如何注解
    GG修改器常用参数大全与lua脚本的基本编写
    GG修改器的基本使用与lua脚本的基本认识
    小程序学习
  • 原文地址:https://www.cnblogs.com/viewcozy/p/4634202.html
Copyright © 2020-2023  润新知