我有一台服务器使用TCP
套接字与客户端进行通信。
我想从一个客户端(Sender)
向服务器发送一个对象,该对象将此对象发送到另一个客户端(Receiver )
该对象包含不同类型的字段,如
Class Test {
public string key;
public int id;
public string message;
public Test ()
{
// constructor code
}
}
我的问题是如何将对象转换为字节数组,并且在Receiver
中接收此字节数组时如何执行相反的操作(从字节数组转换为对象)?
答案 0 :(得分:1)
您需要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的序列化,这样您就不会遇到与平台字节序(字节顺序)相关的问题。