WSADATA 구조체(winsock.h)

WSADATA 구조체에는 Windows 소켓 구현에 대한 정보가 포함되어 있습니다.

구문

typedef struct WSAData {
  WORD           wVersion;
  WORD           wHighVersion;
#if ...
  unsigned short iMaxSockets;
#if ...
  unsigned short iMaxUdpDg;
#if ...
  char           *lpVendorInfo;
#if ...
  char           szDescription[WSADESCRIPTION_LEN + 1];
#if ...
  char           szSystemStatus[WSASYS_STATUS_LEN + 1];
#else
  char           szDescription[WSADESCRIPTION_LEN + 1];
#endif
#else
  char           szSystemStatus[WSASYS_STATUS_LEN + 1];
#endif
#else
  unsigned short iMaxSockets;
#endif
#else
  unsigned short iMaxUdpDg;
#endif
#else
  char           *lpVendorInfo;
#endif
} WSADATA;

멤버

wVersion

형식: WORD

Ws2_32.dll 호출자가 사용해야 하는 Windows 소켓 사양의 버전입니다. 상위 바이트는 부 버전 번호를 지정합니다. 낮은 순서의 바이트는 주 버전 번호를 지정합니다.

wHighVersion

형식: WORD

Ws2_32.dll 지원할 수 있는 가장 높은 버전의 Windows 소켓 사양입니다. 상위 바이트는 부 버전 번호를 지정합니다. 낮은 순서의 바이트는 주 버전 번호를 지정합니다.

WSAStartup 함수에 전달된 wVersionRequested 매개 변수에서 요청된 버전이 Ws2_32.dll 지원할 수 있는 Windows 소켓 사양의 가장 높은 버전인 경우 wVersion 멤버와 동일한 값입니다.

iMaxSockets

형식: 부호 없는 short

열 수 있는 최대 소켓 수입니다. Windows 소켓 버전 2 이상에서는 이 멤버를 무시해야 합니다.

iMaxSockets 멤버는 Windows 소켓 사양 1.1과의 호환성을 위해 유지되지만 새 애플리케이션을 개발할 때는 사용하지 않아야 합니다. 모든 기본 서비스 공급자에 적합한 단일 값은 없습니다. Windows 소켓의 아키텍처는 여러 공급자를 지원하도록 버전 2에서 변경되었으며 WSADATA 구조는 더 이상 단일 공급업체의 스택에 적용되지 않습니다.

iMaxUdpDg

형식: 부호 없는 short

최대 데이터그램 메시지 크기입니다. 이 멤버는 Windows 소켓 버전 2 이상에서 무시됩니다.

iMaxUdpDg 멤버는 Windows 소켓 사양 1.1과의 호환성을 위해 유지되지만 새 애플리케이션을 개발할 때는 사용하지 않아야 합니다. Windows 소켓의 아키텍처는 여러 공급자를 지원하도록 버전 2에서 변경되었으며 WSADATA 구조는 더 이상 단일 공급업체의 스택에 적용되지 않습니다. 특정 Windows 소켓 서비스 공급자 및 소켓 유형과 관련된 실제 최대 메시지 크기의 경우 애플리케이션은 소켓을 만든 후 SO_MAX_MSG_SIZE 옵션 값을 검색하기 위해 getsockopt 를 사용해야 합니다.

lpVendorInfo

형식: char FAR*

공급업체별 정보에 대한 포인터입니다. Windows 소켓 버전 2 이상에서는 이 멤버를 무시해야 합니다.

lpVendorInfo 멤버는 Windows 소켓 사양 1.1과의 호환성을 위해 유지됩니다. Windows 소켓의 아키텍처는 여러 공급자를 지원하도록 버전 2에서 변경되었으며 WSADATA 구조는 더 이상 단일 공급업체의 스택에 적용되지 않습니다. 공급업체별 구성 정보에 액세스해야 하는 애플리케이션은 getsockopt 를 사용하여 공급업체별 정보에 대한 옵션 PVD_CONFIG 값을 검색해야 합니다.

szDescription[WSADESCRIPTION_LEN + 1]

형식: char[WSADESCRIPTION_LEN+1]

Ws2_32.dll Windows 소켓 구현에 대한 설명을 복사하는 NULL 종료 ASCII 문자열입니다. 텍스트(최대 길이 256자)는 컨트롤 및 서식 문자를 제외한 모든 문자를 포함할 수 있습니다. 애플리케이션이 이 멤버에 대해 사용할 가능성이 가장 높은 용도는 상태 메시지에 표시(잘릴 수 있음)하는 것입니다.

szSystemStatus[WSASYS_STATUS_LEN + 1]

형식: char[WSASYS_STATUS_LEN+1]

Ws2_32.dll관련 상태 또는 구성 정보를 복사하는 NULL 종료 ASCII 문자열입니다. Ws2_32.dll 정보가 사용자 또는 지원 직원에게 유용할 수 있는 경우에만 이 매개 변수를 사용해야 합니다. 이 멤버는 szDescription 매개 변수의 확장으로 간주해서는 안 됩니다.

설명

WSAStartup 함수는 프로세스에서 Windows 소켓 DLL 사용을 시작합니다. WSAStartup 함수는 에 대한 포인터를 반환합니다.
lpWSAData 매개 변수의 WSADATA 구조체입니다.

wHighVersion 멤버에 반환된 Windows 소켓 사양의 현재 버전
WSADATA 구조는 하위 바이트의 주 버전 번호와 하이 바이트의 부 버전 번호로 인코딩된 버전 2.2입니다. 현재 Winsock DLL 버전인 Ws2_32.dll은 다음 버전의 Windows 소켓 사양을 요청하는 애플리케이션을 지원합니다.

  • 1.0
  • 1.1
  • 2.0
  • 2.1
  • 2.2
애플리케이션에서 요청한 버전에 따라 위의 버전 번호 중 하나는 하위 바이트의 주 버전 번호로 인코딩된 값과 WSADATA 구조의 wVersion 멤버에 반환되는 하이 바이트의 부 버전 번호입니다.
참고WSAStartup을 성공적으로 호출한 후 wVersion의 값이 2 이상인 경우 애플리케이션은 WSADATAiMaxsockets, iMaxUdpDglpVendorInfo 멤버를 무시해야 합니다. Windows 소켓의 아키텍처가 여러 공급자를 지원하도록 버전 2에서 변경되었으며 WSADATA 가 더 이상 단일 공급업체의 스택에 적용되지 않으므로 공급자별 정보를 제공하기 위해 두 가지 새로운 소켓 옵션이 도입되었습니다. SO_MAX_MSG_SIZE( iMaxUdpDg 멤버를 대체) 및 PVD_CONFIG(다른 공급자별 구성이 발생할 수 있도록 허용).
 

예제

다음 예제에서는 WSADATA 구조체를 사용하는 방법을 보여 줍니다.

WORD wVersionRequested;
WSADATA wsaData;
int err;
 
wVersionRequested = MAKEWORD( 2, 2 );
 
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
    /* Tell the user that we could not find a usable */
    /* WinSock DLL.                                  */
    return;
}
 
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater    */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we      */
/* requested.                                        */
 
if ( LOBYTE( wsaData.wVersion ) != 2 ||
        HIBYTE( wsaData.wVersion ) != 2 ) {
    /* Tell the user that we could not find a usable */
    /* WinSock DLL.                                  */
    WSACleanup( );
    return; 
}
 
/* The WinSock DLL is acceptable. Proceed. */




요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
머리글 winsock.h(Winsock2.h 포함)

추가 정보

SOL_SOCKET 소켓 옵션

소켓 옵션 및 IOCTL

WSAStartup

getsockopt