将对象转换为字节数组

3

我有一台使用 TCP 套接字与客户端进行通信的服务器。

我想将一个对象从客户端中的一个 (发送方) 发送到服务器,然后将此对象发送到另一个客户端 (接收方)

该对象包含不同类型的字段,如下所示:

Class Test {
      public string key;
      public int id;
      public string message;
      public Test ()
      {
         // constructor code
      }

}

我的问题是如何将对象转换为字节数组,并在接收者(Receiver)接收这个字节数组时如何做相反的操作(将字节数组转换为对象)?
1个回答

1

您需要序列化您的对象。在C#中有许多种方法可以实现。

您可以将对象序列化为二进制字节、XML或自定义格式。如果您想要二进制字节(显然这是您想要的),您可以使用BinaryFormatter类。

来自MSDN示例:

Test test = new Test();
FileStream fs = new FileStream("output", FileMode.Create);
// Construct a BinaryFormatter and use it to serialize the data to the stream.
BinaryFormatter formatter = new BinaryFormatter();
try 
{
    formatter.Serialize(fs, test); 
}
catch (SerializationException e) 
{
    Console.WriteLine("Failed to serialize. Reason: " + e.Message);
    throw;
}
finally 
{
    fs.Close();
}

当然,你将使用套接字输出流发送数据,而不是一个FileStream对象。
如果您考虑多个平台,我建议您使用基于XML的序列化,这样就不会遇到与平台字节顺序有关的问题。

感谢您的帮助 :) - Mohamad Ghanem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接