前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# 对象和byte数组的互相转化(序列化)

C# 对象和byte数组的互相转化(序列化)

作者头像
bering
发布2019-12-03 11:35:35
2.7K0
发布2019-12-03 11:35:35
举报

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

通常Socket数据传送过程中,我们把对象转化为byte数组,接手时再将数组转化为对应的对象,这一过程可以通过序列化完成

前提是传输的对象必须标记为可以序列化的,下面举个例子:

Package为 我们要传送接收的对象消息

 [Serializable]
    public class Package
    {
        /// <summary>
        /// 包类型
        /// </summary>
        public PackageType PackType { get; set; }
        /// <summary>
        /// 源IP及端口
        /// </summary>
        public string Src_IP_Port { get; set; }
        /// <summary>
        /// 目标IP及端口
        /// </summary>
        public string Desc_IP_Port { get; set; }
    }

发送数据时,我们通过BinaryFormatter对象将Package对象序列化进MemoryStream内存流中,然后得到Byte数组进行传递。

   private void Send(Package pack, Socket s)
        {
            BinaryFormatter formatter = new BinaryFormatter();
            byte[] retbuff = new byte[1];
            using (MemoryStream mStream = new MemoryStream())
            {
                formatter.Serialize(mStream, pack);
                mStream.Flush();
                s.Send(mStream.GetBuffer(), (int)mStream.Length, SocketFlags.None);
                s.Receive(retbuff, 1, SocketFlags.OutOfBand);
                if (retbuff[0] == 0)
                {
                    Send(pack, s);
                }
            }
        }

接收数据时将byte数组写入内存流,通过BInaryFormatter的反序列化将内存流中的数据转化为对象

   BinaryFormatter formatter = new BinaryFormatter();
                        using (MemoryStream mStream = new MemoryStream())
                        {
                            mStream.Write(buffer, 0, ret);
                            mStream.Flush();
                            mStream.Seek(0, SeekOrigin.Begin);
                            pack = (Package)formatter.Deserialize(mStream);
                        }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档