더북(TheBook)

SocketAddress 클래스에는 생성자가 두 개 있다. 첫째 것은 4바이트 IP 주소와 포트 번호를 받아 이를 내부 sockaddr 구조체의 값으로 채운다. 생성자는 주소 패밀리를 AF_INET으로 항상 지정하는데, 인자 자체가 IPv4 주소 체계일 때만 의미 있는 것이기 때문이다. IPv6를 지원하려면 다른 생성자를 하나 더 만들어 거기서 해당 값을 지정하면 된다.

둘째 생성자는 네이티브 sockaddr 구조체를 받아 내부 mSockAddr 필드에 복사한다. 네트워크 API가 sockaddr을 리턴했는데 이를 SocketAddress 객체로 래핑하고 싶을 때 유용하다.

GetSize() 함수는 내부의 sockaddr 길이를 넘겨야 하는 함수에 일일이 sizeof 코드를 쓰지 않아도 되도록 도와주는 함수이다.

맨 마지막의 소켓 주소에 대한 shared_ptrusing으로 별칭 선언해 두면 여러 곳에서 소켓 주소를 공유해서 써야 할 때 메모리 정리를 신경 쓸 필요가 없어서 편리하다. 여기에 구현한 SocketAddress 클래스는 최소한의 기능만 감싸둔 것이지만, 이것을 시작점으로 해서 이후 예제에서 필요로 하는 기능을 추가하며 점점 살을 붙여갈 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.