2014-11-06 3 views
2

나는 TCP 소켓을 사용하는 클라이언트와 통신하는 서버가 있습니다. (Receiver)개체를 바이트 배열로 변환

개체가 내 질문에 어떻게이

Class Test { 
     public string key; 
     public int id; 
     public string message; 
     public Test() 
     { 
     // constructor code 
     } 

} 

같은 다른 유형의 필드를 포함하는 다른 클라이언트에이 객체를 전송

내가 서버에 클라이언트 (Sender) 중 하나에서 개체를 보내려면 객체를 바이트 배열로 변환하고,이 바이트 배열을받을 때 Receiver에서 반대 작업 (바이트 배열에서 객체로 변환)을 수행하는 방법은 무엇입니까?

답변

0

serialize your object이 필요합니다. C#에서 그렇게하는 방법은 많습니다.

개체를 이진 바이트, XML 또는 사용자 지정 양식으로 serialize 할 수 있습니다. 바이너리 바이트를 원한다면 (분명히 원하는 바입니다) BinaryFormatter 클래스를 사용할 수 있습니다. 은 MSDN 예에서

: 물론

Test test = new Test(); 
FileStream fs = new FileStream("output", FileMode.Create); 
// Construct a BinaryFormatter and use it to serialize the data to the stream. 
BinaryFormatter formatter = new BinaryFormatter(); 
try 
{ 
    formatter.Serialize(fs, test); 
} 
catch (SerializationException e) 
{ 
    Console.WriteLine("Failed to serialize. Reason: " + e.Message); 
    throw; 
} 
finally 
{ 
    fs.Close(); 
} 

, 당신은 데이터를 전송하는 소켓의 출력 스트림을 사용하는 대신 FileStream 객체의.

여러 플랫폼을 고려중인 경우 XML 기반 직렬화를 사용하여 플랫폼 엔디안 (바이트 순서)과 관련된 문제가 발생하지 않도록 제안합니다.

+0

도움 주셔서 감사합니다. :) –

관련 문제