[TCP/IP] #2-2. 소켓 초기화와 종료
소켓 초기화와 종료
- 필요한 작업
- 소켓 생성 전: 윈속 초기화
- 소켓 닫기 후: 윈속 종료
이번 포스트에서는 윈속 초기화와 종료를 알아보고, 다음에 소켓 생성과 닫기를 알아본다.
소켓 초기화
- 모든 프로그램은 최초 소켓 호출 전에 반드시 윈속 초기화 함수를 호출해야 한다.
WSAStartup()
- 프로그램에서 사용할 윈속 버전을 요청하여 윈속 라이브러리(
WS2_32.DLL
)를 초기화한다. - 실패할 경우 라이브러리가 메모리에 로드되지 않고, 직접 오류 코드를 리턴한다.
- 유의사항
- 윈속 버전이 같아도, 실제 사용 가능한 프로토콜은 OS에 따라 달라지므로 주의해야 한다.
- 프로그램에서 사용할 윈속 버전을 요청하여 윈속 라이브러리(
#include <winsock2.h>
int WSAStartup(
WORD wVersionRequested, // 1
LPWSADATA lpWSAData // 2
);
wVersionRequested
- 프로그램이 요구하는 최상위 윈속 버전
- 하위 8비트에 주버전, 상위 8비트에 부버전을 넣어 전달한다.
lpWSAData
- 윈도우 운영체제가 제공하는 윈속 구현에 관한 정보를 얻을 수 있다.
- 하지만 응용 프로그램이 이 정보를 사용할 일은 별로 없다.
소켓 종료
- 프로그램을 종료할 때는 윈속 종료 함수를 호출해야 한다.
WSACleanup()
- 윈속 사용 중지를 운영체제에 알려 관련 리소스를 반환한다.
- 호출 실패시
WSAGetLastError()
를 호출하여 오류 코드를 얻을 수 있다.
#include <winsock2.h>
int WSACleanup(void);
Leave a comment