2012-02-22 25 views
0

如何使用TCP套接字将变量/对象/数据从一个程序发送到局域网中的另一个程序?特别是,我想发送像TreeNode和ListViewItem这样的变量。我怎样才能做到这一点?发件人程序如何将变量转换为可以发送给局域网中另一个程序的表单?接收器程序如何将发送的变量恢复为原始形式?如何发送TCP套接字中的变量/对象?

编辑:在不再可用的网站上找到以下代码并要求删除该链接。

 // Convert an object to a byte array 
     private byte[] ObjectToByteArray(Object obj) 
     { 
      if (obj == null) 
       return null; 
      BinaryFormatter bf = new BinaryFormatter(); 
      MemoryStream ms = new MemoryStream(); 
      bf.Serialize(ms, obj); 
      return ms.ToArray(); 
     } 

     // Convert a byte array to an Object 
     private Object ByteArrayToObject(byte[] arrBytes) 
     { 
      MemoryStream memStream = new MemoryStream(); 
      BinaryFormatter binForm = new BinaryFormatter(); 
      memStream.Write(arrBytes, 0, arrBytes.Length); 
      memStream.Seek(0, SeekOrigin.Begin); 
      Object obj = (Object)binForm.Deserialize(memStream); 
      return obj; 
     } 
+1

这被称为*序列化*。你应该阅读它。 – svick 2012-02-22 16:45:32

+0

请勿将“C#”等内容添加到标题的末尾。这就是标签的用途。 – 2012-02-22 16:57:41

+0

@JohnSaunders对不起。我只是在具体。不知道我做得太过分了。 – Xel 2012-02-22 17:54:55

回答

3

你可以将数据串行化成一个字节数组,然后发送它?接收器程序将在另一端对数据进行反序列化。

0

它被称为序列化,它有很多种类。某些类型支持某些类型的数据,某些类型提供比压缩比更高的速度,某些类型提供比速度更高的压缩比。

JSON.NET,谷歌协议缓冲区,YaxLib ......有很多,请选择。有些比其他更容易使用。我建议使用JSON.NET,因为在那里可能有更多的在线教程,并且在调试时它是人性化的。