[TCP/IP] #2-2. 소켓 초기화와 종료

소켓 초기화와 종료

  • 필요한 작업
    • 소켓 생성 전: 윈속 초기화
    • 소켓 닫기 후: 윈속 종료

 

이번 포스트에서는 윈속 초기화와 종료를 알아보고, 다음에 소켓 생성과 닫기를 알아본다.


소켓 초기화

  • 모든 프로그램은 최초 소켓 호출 전에 반드시 윈속 초기화 함수를 호출해야 한다.
  • WSAStartup()
    • 프로그램에서 사용할 윈속 버전을 요청하여 윈속 라이브러리(WS2_32.DLL)를 초기화한다.
    • 실패할 경우 라이브러리가 메모리에 로드되지 않고, 직접 오류 코드를 리턴한다.
    • 유의사항
      • 윈속 버전이 같아도, 실제 사용 가능한 프로토콜은 OS에 따라 달라지므로 주의해야 한다.  
#include <winsock2.h>

int WSAStartup(
    WORD wVersionRequested, // 1
    LPWSADATA lpWSAData // 2 
);

 

  1. wVersionRequested
    • 프로그램이 요구하는 최상위 윈속 버전
    • 하위 8비트에 주버전, 상위 8비트에 부버전을 넣어 전달한다.
  2. lpWSAData
    • 윈도우 운영체제가 제공하는 윈속 구현에 관한 정보를 얻을 수 있다.
    • 하지만 응용 프로그램이 이 정보를 사용할 일은 별로 없다.

소켓 종료

  • 프로그램을 종료할 때는 윈속 종료 함수를 호출해야 한다.
  • WSACleanup()
    • 윈속 사용 중지를 운영체제에 알려 관련 리소스를 반환한다.
    • 호출 실패시 WSAGetLastError()를 호출하여 오류 코드를 얻을 수 있다.

 

#include <winsock2.h>

int WSACleanup(void);

출처 TCP/IP 소켓 프로그래밍

Categories:

Updated:

Leave a comment