2012-02-22 60 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,因爲在那裏可能有更多的在線教程,並且在調試時它是人性化的。