2012-02-22 13 views
0

TCPソケットを使用してLAN内の変数/オブジェクト/データを別のプログラムに送信するにはどうすればよいですか?特に、私はTreeNodeやListViewItemのような変数を送りたいと思っています。これどうやってするの?送信者プログラムは、その変数をLAN内の別のプログラムに送信できる形式に変換する方法を教えてください。レシーバプログラムは、送信された変数を元の形式に戻す方法を教えてください。TCPソケットで変数/オブジェクトを送信するには?

EDIT:使用できなくなったリンクを削除するように要求されたウェブサイトで、次のコードを見つけました。

 // 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

+0

タイトルの末尾に「C#」などを追加しないでください。それがタグのためのものです。 –

+0

@JohnSaunders申し訳ありません。私はちょうど具体的であった。私はそれを過ぎていたことを知らなかった。 – Xel

答えて

3

データをバイト配列にシリアル化して送信できますか?受信側プログラムは、もう一方の端でデータをデシリアライズします。

0

シリアライゼーションと呼ばれ、多くの種類があります。特定のタイプのデータを優先するタイプもあれば、圧縮率よりも速いタイプもあれば、速度よりも大きな圧縮率を提供するタイプもあります。

JSON.NET、Googleプロトコルバッファ、YaxLib ...たくさんある、あなたの選択を取る。いくつかは他のものより使いやすくなっています。私はJSON.NETを推奨します。なぜなら、おそらくオンラインのチュートリアルがオンラインであり、デバッグしている間は人間が読めるようになっているからです。

関連する問題