2014-11-06 188 views
2

我有一台服务器,它使用一个TCP套接字与客户端进行通信。将对象转换为字节数组

我想从客户端(Sender)的一个发送对象到服务器,发送该对象到另一个客户端(Receiver)

的对象包含这样

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

} 

我的问题是如何不同类型的字段将对象转换为字节数组,并在Receiver中接收到此字节数组时如何执行相反操作(将字节数组转换为对象)?

回答

0

您需要serialize your object。在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的序列化,这样您就不会遇到与平台字节顺序(字节顺序)相关的问题。

+0

感谢您的帮助:) – 2014-11-06 17:00:37

相关问题