다음을 통해 공유


파일 포함

Windows Sockets 1.1에서 사용할 원래 포함 파일은 Winsock.h 헤더 파일이었습니다. Berkeley UNIX 소켓을 기반으로 하는 기존 소스 코드를 Windows 소켓으로 쉽게 포팅하기 위해 Winsock 1.1용 Windows 소켓 개발 키트에는 표준 UNIX 포함 파일과 이름이 같은 여러 포함 파일( 예: sys/socket.h 및 arpa/inet.h 헤더 파일)이 제공됩니다. 그러나 이와 비슷한 이름의 Winsock 헤더 파일에는 Winsock2.h 헤더 파일을 포함하는 지시문만 포함되어 있습니다.

Windows 소켓 2가 릴리스되었을 때 Windows 소켓에 사용할 기본 포함 파일의 이름이 Winsock2.h바뀌었습니다. Winsock 1.1의 이전 원본 Winsock.h 헤더 파일도 이전 애플리케이션과의 호환성을 위해 유지되었습니다. Windows 2000이 릴리스된 이후 Winsock 1.1 호환 애플리케이션의 개발은 더 이상 사용되지 않습니다. 이제 모든 애플리케이션은 Winsock 애플리케이션 원본 파일에서 Winsock2.h 포함 지시문을 사용해야 합니다.

Winsock2.h 헤더 파일에는 대부분의 Winsock 함수, 구조 및 정의가 포함됩니다. Ws2tcpip.h 헤더 파일에는 IP 주소를 검색하는 데 사용되는 최신 함수 및 구조를 포함하는 TCP/IP용 WinSock 2 프로토콜 관련 부록 문서에 도입된 정의가 포함되어 있습니다. 여기에는 IPv4 또는 IPv6 주소 모두에 대한 이름 확인을 제공하는 getaddrinfo getnameinfo 함수 패밀리가 포함됩니다. Ws2tcpip.h 헤더 파일은 애플리케이션에서 이러한 IP 독립적 명명 함수가 필요한 경우에만 필요합니다.

Mswsock.h 헤더 파일에는 Windows 소켓 2에 대한 Microsoft 관련 확장명(예: TransmitFile, AcceptEx 및 커넥트Ex)에 대한 정의가 포함되어 있습니다. 애플리케이션에서 이러한 Microsoft 관련 확장을 사용하지 않는 한 Mswsock.h 헤더 파일은 일반적으로 필요하지 않습니다.

Winsock2.h 헤더 파일은 내부적으로 Windows.h 헤더 파일의 핵심 요소를 포함하므로 일반적으로 Winsock 애플리케이션에서 Windows.h 헤더 파일에 대한 #include 줄이 없습니다. Windows.h 헤더 파일에 #include 줄이 필요한 경우 앞에 #define WIN32_LEAN_AND_MEAN 매크로가 와야 합니다. 기록적인 이유로 Windows.h 헤더는 기본적으로 Windows 소켓 1.1에 대한 Winsock.h 헤더 파일을 포함합니다. Winsock.h 헤더 파일의 선언은 Windows 소켓 2에 필요한 Winsock2.h 헤더 파일의 선언과 충돌합니다. WIN32_LEAN_AND_MEAN 매크로를 사용하면 Winsock.h가 Windows.h 헤더에 포함되지 않습니다. 이를 보여 주는 예제는 다음과 같습니다.

#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>

#pragma comment(lib, "Ws2_32.lib")

int main() {
  return 0;
}

기본 Winsock 애플리케이션 만들기

Winsock 시작

소켓 애플리케이션을 Winsock으로 포팅

Winsock 프로그래밍 고려 사항