본문 바로가기

[C#] 네트워크(Network)를 통한 클래스(Class) 직렬화(Serialize) 역직렬화(Deserialize)

C#
·
2019. 11. 5. 10:54
반응형

네트워크를 통해서 클래스를 직렬화 역직렬화 하는 방법으로 다음과 같은 방법을 사용했습니다.

서버

클라이언트

 

하지만 위와 같은 방법으로 클래스를 직렬화 해서 역직렬화 했을 때

클라이언트쪽에서 다음과 같은 오류가 발생했습니다.

 

이 오류는 역직렬화 할때 클라이언트 쪽에서는 참조하는 어셈블리가 없기 때문에 클래스를 역직렬화 할 수가 없는 오류입니다. 같은 클래스를 정의해도 클라이언트 쪽에서는 어떤 클래스인지 인식할 수 없습니다. 오류를 해결하는 방법으로 DLL을 만들어서 어셈블리를 참조하는 방법으로 오류를 해결할 수도 있지만, 여기서는 Xml을 직렬화 한 후 역직렬화 하는 방식으로 설명드리겠습니다.

 

다음은 XmlSerializer 클래스를 이용한 클래스 직렬화 역직렬화를 방식입니다. NetworkStreamList<Data>를 직렬화 한 후 클라이언트 쪽에서 역직렬화를 하면 됩니다.

클래스의 변수는 반드시 public으로 지정해야 변수에 있는 값이 전달이 됩니다. 또한 직렬화하려는 클래스는 매개변수가 없는 생성자를 가지고 있어야 합니다.

서버

클라이언트

 

Client 실행 결과

반응형
블로그 이미지
Frontend Engineer

댓글