[- Disclaimer -]
아래 내용은 정보보안 공부 목적으로 작성된 것이나, 이를 토대로 허가되지 않은 대상에 실습을 진행할 경우 해킹 시도로 간주하여 법적 처벌을 받을 수 있음을 알려 드립니다.
WSAStartup()
✦ Winsock 초기화
✦ Parameter1에 전달되는 Argument1
✧ wVersionRequested
→ 프로그램이 요청하는 최상위 Winsock Version Ex) MAKEWORD(3, 2) 또는 0x0203은 Winsock 3.2 사용 요청을 의미
하위 8 bit: Major Version
상위 8 bit: Minor Version
Plain Text
복사
→ Ex) MAKEWORD(3, 2) 또는 0x0203은 Winsock 3.2 사용 요청을 의미
✦ Parameter2에 전달되는 Argument2
✧ lpWSAData
→ WSADATA 구조체 전달 시 OS가 제공하는 Wicsock 구현 정보를 얻음
→ 응용 프로그램이 실제 사용될 Winsock Version, 시스템 제공 Winsock 최상위 Version 등
→ 응용 프로그램이 이 정보를 실제로 사용할 일은 거의 없음
✦ Return 값
✧ 성공
→ 0
✧ 실패
→ Error Code // WSAGetLastError()가 Return하는 Error Code는 부정확해 WSAStartup()에서 직접 Error Code를 Return 가능하게 설계 됨
int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
Plain Text
복사
WSACleanup()
✦ Resource를 반환하여 Winsock 종료
✦ Return 값
✧ 성공
→ 0
✧ 실패
→ SOCKET_ERROR // WSAGetLastError()로 Error Code 얻음
Winsock 초기화 및 해제 - Ex)
#pragma comment(lib, "ws2_32")
#include <winsock2.h>
int main(int argc, char *argv[]) {
WSADATA wsa;
if(WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
return 1;
HANDLE hThread[2];
hThread[0] = CreateThread(NULL, 0, TCPServer4, NULL, 0, NULL);
hThread[1] = CreateThread(NULL, 0, TCPServer6, NULL, 0, NULL);
WaitForMultipleObjects(2, hThread, TRUE, INFINITE);
WSACleanup();
return 0;
}
Plain Text
복사



