日期:2014-05-19  浏览次数:20849 次

在C#中如何将一个对象做为消息用Socket传输
在C#中如何将一个对象做为消息用Socket传输,
比如一个对象Message   request在客户端通过Socket传给服务端,
服务器端再把它还原成Message,如何实现呢?

------解决方案--------------------
using System;
using System.Collections.Generic;
using System.IO;
using System.Collections;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
using System.Security.Permissions;


public class MyClass
{
[Serializable]
public class A{
public int intField;
public string strFiled;
}
public static void Main()
{
try{
//实例化类
A a=new A();
a.intField=100;
a.strFiled= "Hello world ";
//序列化
MemoryStream ms=new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, a);
byte[] bytes=ms.ToArray();
Console.WriteLine(BitConverter.ToString(bytes));
//移动到头部
ms.Position =0;
//反序列化,并显示
A b=formatter.Deserialize(ms) as A;
Console.WriteLine( "intField:{0} \t strFiled:{1} ",b.intField,b.strFiled);

}
catch(Exception e){
Console.WriteLine(e.ToString());
}
finally{
Console.WriteLine( "END ");
Console.Read();
}
}


}

========================运行结果
00-01-00-00-00-FF-FF-FF-FF-01-00-00-00-00-00-00-00-0C-02-00-00-00-3D-6F-75-74-70
-75-74-2C-20-56-65-72-73-69-6F-6E-3D-30-2E-30-2E-30-2E-30-2C-20-43-75-6C-74-75-7
2-65-3D-6E-65-75-74-72-61-6C-2C-20-50-75-62-6C-69-63-4B-65-79-54-6F-6B-65-6E-3D-
6E-75-6C-6C-05-01-00-00-00-09-4D-79-43-6C-61-73-73-2B-41-02-00-00-00-08-69-6E-74
-46-69-65-6C-64-08-73-74-72-46-69-6C-65-64-00-01-08-02-00-00-00-64-00-00-00-06-0
3-00-00-00-0B-48-65-6C-6C-6F-20-77-6F-72-6C-64-0B
intField:100 strFiled:Hello world
END