'프로그래밍/Network'에 해당되는 글 1건

  1. 2013.06.05 [C++] 소켓 프로그래밍
posted by WizardMania 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