当我们需要通过Socket通信发送对象,发送类是DataTable表的时候,我们通常需要将这个对象先序列化,然后转换层自己数组在通过socket.Send()方法发送,然后再接受端进行反序列化获取该对象
public class SerializeObj
{
public SerializeObj()
{ }
/// <summary>
/// 序列化对象到字节组
/// </summary>
/// <param name="obj">泛型对象</param>
/// <returns>序列化后的字节数组</returns>
public static byte[]Serialize<T>(T obj)
{
try
{
IFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, obj);
stream.Position = 0;
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
stream.Flush();
stream.Close();
return buffer;
}
catch (Exception ex)
{
throw new Exception("序列化失败,原因:" + ex.Message);
}
}
/// <summary>
/// 反序列化 字符串到对象
/// </summary>
/// <param name="buffer">要转换为对象的字节数组</param>
/// <returns>反序列化出来的对象</returns>
public static T Desrialize<T>(byte[] buffer)
{
try
{
T obj = default(T);
IFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream(buffer);
obj = (T)formatter.Deserialize(stream);
stream.Flush();
stream.Close();
return obj;
}
catch (Exception ex)
{
throw new Exception("反序列化失败,原因:" + ex.Message);
}
}
本文介绍如何在Socket通信中实现对象的序列化与反序列化过程,特别是针对DataTable对象。通过使用BinaryFormatter,文章提供了具体的C#代码实现细节。

5163

被折叠的 条评论
为什么被折叠?



