반응형
직렬화(Serialize)
프로그램의 object에 담긴 데이터를 어떤 외부 파일에 write 및 전송하는 것
역직렬화(Deserialize)
어떤 외부 파일의 데이터를 프로그램 내의 object로 read 해오는 것
+ 보충 설명
네트워크 통신에서 객체 또는 클래스 직렬화의 의미는 다음과 같다.
상대 호스트와 데이터를 주고 받을 때 데이터의 종류는 int, double 과 같은 기본 타입일 수도 있지만, 포인터 타입을 가질 수도 있다. 또한 바이트가 연속적이지 않은 NON-POD 타입일 수 있다.(i.e. 가상 함수 또는 vector를 멤버로 가지는 클래스 타입 등) 기본 타입은 그 값 그대로 유효하지만 포인터 타입은 그렇지 않다. 포인터 타입은 어떤 유효한 값에 대한 주소를 가지는데, 이는 자신의 컴퓨터의 메모리 주소에 해당하기 때문에 상대방의 동일한 주소에도 동일한 값이 들어 있다고 확신할 수 없다. 따라서 포인터를 그대로 넘기면 이상한 값을 가리키게 될 수 있다. 클래스 타입도 마찬가지다.
이러한 이유로 데이터를 그대로 전송하지 않고, 전송할 데이터들을 하나의 버퍼에 연속된 비트 단위로 길게 나열하여 연속으로 저장하는 방식을 객체 직렬화라고 한다. 직렬화된 버퍼를 수신하면 다시 객체의 각 멤버 타입에 맞게 분리(역직렬화)하여 데이터를 복구한다.
'CS 기초 > Network' 카테고리의 다른 글
Reliable UDP (RUDP)란? (0) | 2023.02.06 |
---|---|
논블로킹(Non-blocking) 소켓 만들기 | ioctlsocket, select (0) | 2020.10.22 |
IP 주소 127.0.0.1 의 의미 - 루프백(loopback) or 로컬호스트(localhost) 주소 (0) | 2020.10.06 |
Winsock2 라이브러리를 이용하여 간단한 TCP/IP 서버와 클라이언트를 구현해보자 | C++ (5) | 2020.05.04 |
네트워크 프로그래밍을 위한 TCP/IP와 OSI 7 layer (0) | 2020.04.25 |
댓글