如何在TCP Socket中发送变量/对象?

时间:2012-02-22 16:42:43

标签: c# sockets tcp

如何使用TCP套接字将LAN中的变量/对象/数据从一个程序发送到另一个程序?特别是,我想发送TreeNode和ListViewItem等变量。我怎样才能做到这一点?发件人程序如何将变量转换为可以发送到LAN中另一个程序的表单?接收程序如何将发送的变量恢复为原始形式?

编辑:在网站上找到以下代码,该网站已不再可用,并要求删除该链接。

        // Convert an object to a byte array
        private byte[] ObjectToByteArray(Object obj)
        {
            if (obj == null)
                return null;
            BinaryFormatter bf = new BinaryFormatter();
            MemoryStream ms = new MemoryStream();
            bf.Serialize(ms, obj);
            return ms.ToArray();
        }

        // Convert a byte array to an Object
        private Object ByteArrayToObject(byte[] arrBytes)
        {
            MemoryStream memStream = new MemoryStream();
            BinaryFormatter binForm = new BinaryFormatter();
            memStream.Write(arrBytes, 0, arrBytes.Length);
            memStream.Seek(0, SeekOrigin.Begin);
            Object obj = (Object)binForm.Deserialize(memStream);
            return obj;
        }

2 个答案:

答案 0 :(得分:3)

您可以将数据序列化为字节数组然后发送吗?然后,接收器程序将在另一端反序列化数据。

答案 1 :(得分:0)

它被称为序列化,它有很多种类型。某些类型支持某些类型的数据,某些类型提供的速度高于压缩比,有些类型提供的压缩率高于速度。

JSON.NET,Google Protocol Buffers,YaxLib ......有很多选择。有些比其他更容易使用。我推荐使用JSON.NET,因为那里可能有更多的在线教程,而且在你调试时它是人性化的。