2013. 6. 5. 18:52
윈도우에 사용되는 소켓은 윈속이라 하며 사용을 위해서는 winsock2.h 파일이 인클루드 되어야한다.
#include <winsock2.h>
또한 ws2_32.lib 라이브러리를 링크 시켜야한다. 링크방법은
소스코드에 #pragma comment( lib, "ws2_32.lib ) 추가하거나, 프로젝트속성 -> 구성속성 -> 링커 -> 입력 -> 추가종속성에
ws2_32.lib 를 적어준다.
※주의사항
winsock2.h와 windows.h를 동시에 인클루드할시 문제가 발생할 수 있다.
해결방법은 windows.h보다 winsock.h를 먼저 인클루드하면 해결이 된다.
윈속초기화
윈속 프로그래밍시 반드시 WSAStartup으로 윈속의 버전전달과 초기화 작업이 필요하다.
int WSAStartup(
_In_ WORD wVersionRequested, _Out_ LPWSADATA lpWSAData );
wVersionRequested : 초기화할 윈속의 버전
WORD형으로 상위바이트에 부버전정보 상위바이트에 주버전 정보가 들어간다.
MAKEWORD 매크로함수를 이용하면된다. MAKEWORD( 2, 2 ) 주버전 2 부버전 2
lpWSAData : WSADATA 구조체 주소 를 전달, 함수호출후 초기화된 라이브러리의 정보가 채워짐
반환값 : 성공시0, 실패시 0이아닌 값 (에러코드)
윈속해제
윈속 사용이 끝나고 WSACleanup을 호출하여 해제를 해야한다.
int WSACleanup(void);
반환값 : 성송시0, 실패시 SOCKET_ERROR