zoukankan      html  css  js  c++  java
  • C#网络编程学习(6)---序列化和反序列化

    1、什么是序列化和反序列化

    当客户端和服务器进行远程连接时,互相可以发送各种类型的数据。但都要先把这些对象转换为字节序列,才能在网络上进行传输。

    序列化:就是发送方 把对象转换为字节序列的过程。
    反序列化:就是接收方 把字节序列转换为对象的过程。

    2、BinaryFormatter

    BinaryFormatter以二进制格式序列化和反序列化对象。

    属性:
    Serializable:表示可以被序列化
    NonSerializable:屏蔽序列化
    方法:
    binaryFormatter.Serialize(Stream stream,Object obj):把对象序列化到指定的流
    binaryFormatter.Deserialize(Stream stream):把指定流反序列化成对象

    序列化

    /// <summary>
    /// 序列化,Object对象转换为字节数组
    /// </summary>
    private static byte[] EncodeObj(object obj)
    {
         using (MemoryStream ms = new MemoryStream())
         {
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(ms, obj);  //把obj序列化到ms流中
            byte[] data = new byte[ms.Length];
            Buffer.BlockCopy(ms.GetBuffer(), 0, data, 0, (int)ms.Length);
    
            return data;
         }
    }
    

    反序列化

    /// <summary>
    /// 反序列化
    /// </summary>
    private static object DecodeObj(byte[] data)
    {
         using (MemoryStream ms = new MemoryStream(data))
         {
             BinaryFormatter bf = new BinaryFormatter();
             return bf.Deserialize(ms);
         }
    }
    
  • 相关阅读:
    Mifare系列3-卡的能源和数据传递(转)
    Mifare系列2-非接触卡标准(转)
    Mifare系列1-简介(转)
    oot 空间不足解决方法
    C语言位操作(转)
    C语言面试题(三)
    C语言运算符和优先级
    C语言面试题(二)
    C语言面试题(一)
    Ubuntu+Win7双系统grub的修复问题
  • 原文地址:https://www.cnblogs.com/Fflyqaq/p/10868953.html
Copyright © 2011-2022 走看看