더북(TheBook)

WinSock2.h는 딱 소켓 자체에 관련된 함수와 자료형만 선언하고 있다. 부가적인 기능을 사용하려면 다른 파일도 인클루드해야 한다. 예를 들어 나중에 언급할 주소 변환 기능을 사용하려면 Ws2tcpip.h도 인클루드할 필요가 있다.

POSIX 플랫폼의 소켓 라이브러리 종류는 하나밖에 없으며 sys/socket.h를 인클루드하여 쓴다. IPv4 전용 기능을 사용하려면 netinet/in.h를 인클루드해야 할 것이다. 주소 변환기능을 쓰려면 arpa/inet.h를 인클루드하자. 네임 리졸루션(name resolution)을 수행하려면 netdb.h를 인클루드한다.

소켓 라이브러리를 초기화하고 마무리하는 방법도 플랫폼마다 다르다. POSIX 플랫폼에선 라이브러리가 항상 활성화 상태로, 소켓을 사용하기 위해 딱히 뭔가를 먼저 해 줄 필요가 없다. 하지만 Winsock2는 명시적으로 초기화와 마무리를 해 주어야 한다. 이때 어느 버전의 라이브러리를 사용할지도 지정해야 한다. 윈도에서 소켓 라이브러리를 활성화하려면 WSAStartup() 함수를 호출한다.

int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);

wVersionRequested는 2바이트 워드로 하위 바이트는 주 버전 번호, 상위 바이트는 부 버전 번호를 각각 나타내며, 이것으로 원하는 Winsock 구현 버전을 선택할 수 있다. 이 책이 출간되는 시점에서 가장 높은 버전은 2.2로, 보통 MAKEWORD(2, 2)를 인자 값으로 넘겨주면 된다.

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