如何使用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;
}
答案 0 :(得分:3)
您可以将数据序列化为字节数组然后发送吗?然后,接收器程序将在另一端反序列化数据。
答案 1 :(得分:0)
它被称为序列化,它有很多种类型。某些类型支持某些类型的数据,某些类型提供的速度高于压缩比,有些类型提供的压缩率高于速度。
JSON.NET,Google Protocol Buffers,YaxLib ......有很多选择。有些比其他更容易使用。我推荐使用JSON.NET,因为那里可能有更多的在线教程,而且在你调试时它是人性化的。