可以用.net 提供的 SoapFormatter 或者 BinaryFormatter 把你的object serialize
然后通过socket 传送
在接受方用同样的formatter deserialize 还原出来

解决方案 »

  1.   

    [Serializable]
    public class MyClass
    {
    public string MyClassMember = "Hello World";
    } public void Send(Socket socket)
    {
    MyClass obj = new MyClass(); BinaryFormatter bf = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); bf.Serialize(ms, obj); byte[] data = new byte[1024]; while( ms.Read(data, 0, 1024)>0 )
    {
    sk.Send(data);
    }
    } public void Recieve(Socket socket)
    {
    BinaryFormatter bf = new BinaryFormatter(); byte[] data = new byte[1024]; MemoryStream ms = new MemoryStream(); while( sk.Receive(data)>0 )
    {
    ms.Write(data, 0, 1024);
    } MyClass obj = bf.Deserialize(ms) as MyClass;
    }
      

  2.   

    http://blog.csdn.net/roseguns/archive/2004/10/19/142408.aspx
      

  3.   

    请帮我看下一这个错误如何处理,谢谢
    // 用于传递的类
    [Serializable]
    public class MyClass
    {
    public string MyClassMember = "Hello World";
    }// 客户端
    [Serializable]
    public class MyClass
    {
      public string MyClassMember = "Hello World";
    }public class Client
    {
      static void Main()
      {
        Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
        IPEndPoint ep = new IPEndPoint(Dns.GetHostByName("127.0.0.1").AddressList[0],1000);    try
        {
          sock.Connect(ep);
          MemoryStream ms = new MemoryStream();
          BinaryFormatter bf = new BinaryFormatter();
          MyClass obj = new MyClass();
          bf.Serialize(ms,obj);
        
          ms.Position = 0;
          byte[] data = new byte[1024];
          while(ms.Read(data,0,1024)>0)
            sock.Send(data);
        }
        catch{}
        finally
        {
          sock.Shutdown(SocketShutdown.Both);
          sock.Close();
        }
      }
    }// 服务器端
    public class Server
    {
      static void Main()
      {
        Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
        IPEndPoint ep = new IPEndPoint(Dns.GetHostByName("localhost").AddressList[0],1000);
        sock.Bind(ep);
        sock.Listen(1);
        Console.WriteLine("Server is Start...");    Socket sc = sock.Accept();
        BinaryFormatter bf = new BinaryFormatter();    byte[] data = new byte[1024];
        MemoryStream ms = new MemoryStream();    while( sc.Receive(data)>0 )
          ms.Write(data, 0, 1024);    MyClass obj = bf.Deserialize(ms) as MyClass;   // 这一行产生以下的异常信息
        Console.WriteLine(obj.MyClassMember);  }
    }
    未处理的异常: System.Runtime.Serialization.SerializationException: 在分析完成之
    前就遇到流结尾。
      

  4.   

    请帮我看下一这个错误如何处理,谢谢
    // 用于传递的类
    [Serializable]
    public class MyClass
    {
      public string MyClassMember = "Hello World";
    }// 客户端
    public class Client
    {
      static void Main()
      {
        Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
        IPEndPoint ep = new IPEndPoint(Dns.GetHostByName("127.0.0.1").AddressList[0],1000);    try
        {
          sock.Connect(ep);
          MemoryStream ms = new MemoryStream();
          BinaryFormatter bf = new BinaryFormatter();
          MyClass obj = new MyClass();
          bf.Serialize(ms,obj);
        
          ms.Position = 0;
          byte[] data = new byte[1024];
          while(ms.Read(data,0,1024)>0)
            sock.Send(data);
        }
        catch{}
        finally
        {
          sock.Shutdown(SocketShutdown.Both);
          sock.Close();
        }
      }
    }// 服务器端
    public class Server
    {
      static void Main()
      {
        Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
        IPEndPoint ep = new IPEndPoint(Dns.GetHostByName("localhost").AddressList[0],1000);
        sock.Bind(ep);
        sock.Listen(1);
        Console.WriteLine("Server is Start...");    Socket sc = sock.Accept();
        BinaryFormatter bf = new BinaryFormatter();    byte[] data = new byte[1024];
        MemoryStream ms = new MemoryStream();    while( sc.Receive(data)>0 )
          ms.Write(data, 0, 1024);    MyClass obj = bf.Deserialize(ms) as MyClass;   // 这一行产生以下的异常信息
        Console.WriteLine(obj.MyClassMember);  }
    }
    未处理的异常: System.Runtime.Serialization.SerializationException: 在分析完成之
    前就遇到流结尾。
      

  5.   

    你忘了在Deserialize 前把MemoryStream 的position = 0 了,就像客户端一样
    ms.Position = 0;