如何将结构写进socket。 服务器与客户端的通信,相互间需要发送10多种不同的消息。我想把每种消息定义为结构或类。能将结构和类写入socket,并能在另一端正确地取得,并能正确判断是哪个消息吗?想过通过System.XML.Serialize.XMLSerialize类来序列化类,但这样发过去后另一端无法判断这个消息具体是哪个消息,也就无法正确反序列化。期盼各位指教,不胜感激 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以在序列化后的byte[]的前面加上一字节判断是那种类型就可以了,你只定义的8种,1字节就够了,接到后先把第一字节取出判断是哪种类型,再把其他的按照对应的类反序列化就可以了 序列化好像直接序列化到流里面去的,这样的话容不得我再加个byte阿。楼上请指教,能提供代码参考吗? 序列化可以序列化为byte[]的,代码如下#region 序列化和反序列化/// <summary>/// 从二进制数组反序列化得到对象/// </summary>/// <param name="buf">字节数组</param>/// <returns>得到的对象</returns>public static object DeserializeBinary(byte[] buf) { try { System.IO.MemoryStream memStream = new MemoryStream(buf); memStream.Position=0; System.Runtime.Serialization.Formatters.Binary.BinaryFormatter deserializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); object newobj = deserializer.Deserialize(memStream); memStream.Close(); return newobj; } catch { return null; }}/// <summary>/// 序列化为二进制字节数组/// </summary>/// <param name="request">要序列化的对象</param>/// <returns>字节数组</returns>public static byte[] SerializeBinary(object request) { try { System.Runtime.Serialization.Formatters.Binary.BinaryFormatter serializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); System.IO.MemoryStream memStream = new System.IO.MemoryStream(); serializer.Serialize(memStream, request); return memStream.GetBuffer(); } catch { return null; }}#endregion 大家帮忙:wince6.0下关于tabcontrol控件问题。 关于播放mp3的问题 用AddString()、DrawPath()得到的文字怎么避免空心? Combox绑定跳跃问题 parse和convert有什么区别 在C#中怎么获得系统颜色?? 菜鸟问题,请大神帮忙解决 如何降低图片的颜色景深,比如从24位真彩降到8位256色 如何把二进制流转换成一个结构体? 如何播放Flash? 我只是想执行一条SQL语句 请问visual studio 2003里的项目要怎么删?谢谢!
楼上请指教,能提供代码参考吗?
/// 从二进制数组反序列化得到对象
/// </summary>
/// <param name="buf">字节数组</param>
/// <returns>得到的对象</returns>
public static object DeserializeBinary(byte[] buf)
{
try
{
System.IO.MemoryStream memStream = new MemoryStream(buf);
memStream.Position=0;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter deserializer =
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
object newobj = deserializer.Deserialize(memStream);
memStream.Close();
return newobj;
}
catch
{
return null;
}
}/// <summary>
/// 序列化为二进制字节数组
/// </summary>
/// <param name="request">要序列化的对象</param>
/// <returns>字节数组</returns>
public static byte[] SerializeBinary(object request)
{
try
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter serializer =
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream memStream = new System.IO.MemoryStream();
serializer.Serialize(memStream, request);
return memStream.GetBuffer();
}
catch
{
return null;
}
}#endregion