Share via


SOL_SOCKET 소켓 옵션

다음 표에서는 SOL_SOCKET 소켓 옵션에 대해 설명합니다. 소켓 옵션을 가져오고 설정하는 방법에 대한 자세한 내용은 getsockoptsetsockopt 함수 참조 페이지를 참조하세요.

프로토콜을 열거하고 설치된 각 프로토콜에 대해 지원되는 속성을 검색하려면 WSAEnumProtocols, WSCEnumProtocols 또는 WSCEnumProtocols32 함수를 사용합니다.

일부 소켓 옵션에는 이러한 테이블이 전달할 수 있는 것보다 더 많은 설명이 필요합니다. 이러한 옵션에는 추가 페이지에 대한 링크가 포함되어 있습니다.

참고

모든 SOL_SOCKET 소켓 옵션은 IPv4 및 IPv6에 동일하게 적용됩니다(브로드캐스트가 IPv6에서 구현되지 않으므로 SO_BROADCAST 제외).

 

SOL_SOCKET 소켓 옵션

옵션 가져오기 설정 Optval 유형 설명
PVD_CONFIG char [] 서비스 공급자에 대한 구성 정보를 포함하는 불투명 데이터 구조 개체입니다. 이 옵션은 구현에 따라 다릅니다.
SO_ACCEPTCONN DWORD(부울) 소켓이 수신 모드에 있는지 여부를 반환합니다. 이 옵션은 연결 지향 프로토콜에 대해서만 유효합니다.
SO_BROADCAST DWORD(부울) 브로드캐스트 데이터를 보내기 위한 소켓을 구성합니다. 이 옵션은 브로드캐스트를 지원하는 프로토콜(예: IPX 및 UDP)에 대해서만 유효합니다.
SO_BSP_STATE CSADDR_INFO 소켓에서 사용하는 로컬 주소, 로컬 포트, 원격 주소, 원격 포트, 소켓 유형 및 프로토콜을 반환합니다. 자세한 내용은 SO_BSP_STATE 참조를 참조하세요.
SO_CONDITIONAL_ACCEPT DWORD(부울) 들어오는 연결을 프로토콜 스택이 아닌 애플리케이션에서 수락하거나 거부할지 여부를 나타냅니다. 자세한 내용은 SO_CONDITIONAL_ACCEPT 참조를 참조하세요.
SO_CONNDATA char [] 연결을 설정하기 위해 네트워크 요청과 함께 전송되는 일반 네트워크 데이터 스트림이 아닌 추가 데이터입니다. 이 옵션은 DECNet, OSI TP4 등의 레거시 프로토콜에서 사용됩니다. 이 옵션은 Windows의 TCP/IP 프로토콜에서 지원되지 않습니다.
SO_CONNDATALEN DWORD 연결을 설정하기 위해 네트워크 요청과 함께 전송되는 일반 네트워크 데이터 스트림이 아닌 추가 데이터의 길이(바이트)입니다. 이 옵션은 DECNet, OSI TP4 등의 레거시 프로토콜에서 사용됩니다. 이 옵션은 Windows의 TCP/IP 프로토콜에서 지원되지 않습니다.
SO_CONNECT_TIME DWORD 소켓이 연결된 시간(초)을 반환합니다. 이 옵션은 연결 지향 프로토콜에만 유효합니다.
SO_CONNOPT char [] 연결을 설정하기 위해 네트워크 요청과 함께 전송되는 일반 네트워크 데이터 스트림이 아닌 추가 연결 옵션 데이터입니다. 이 옵션은 DECNet, OSI TP4 등의 레거시 프로토콜에서 사용됩니다. 이 옵션은 Windows의 TCP/IP 프로토콜에서 지원되지 않습니다.
SO_CONNOPTLEN DWORD 연결을 설정하기 위해 네트워크 요청과 함께 전송되는 일반 네트워크 데이터 스트림이 아닌 연결 옵션 데이터의 길이(바이트)입니다. 이 옵션은 DECNet, OSI TP4 등의 레거시 프로토콜에서 사용됩니다. 이 옵션은 Windows의 TCP/IP 프로토콜에서 지원되지 않습니다.
SO_DISCDATA char [] 연결 연결을 끊기 위해 네트워크 요청과 함께 전송되는 일반 네트워크 데이터 스트림이 아닌 추가 데이터입니다. 이 옵션은 DECNet, OSI TP4 등의 레거시 프로토콜에서 사용됩니다. 이 옵션은 Windows의 TCP/IP 프로토콜에서 지원되지 않습니다.
SO_DISCDATALEN DWORD 연결 연결을 끊기 위해 네트워크 요청과 함께 전송되는 일반 네트워크 데이터 스트림이 아닌 추가 데이터의 길이(바이트)입니다. 이 옵션은 DECNet, OSI TP4 등의 레거시 프로토콜에서 사용됩니다. 이 옵션은 Windows의 TCP/IP 프로토콜에서 지원되지 않습니다.
SO_DISCOPT char [] 연결을 끊기 위해 네트워크 요청과 함께 전송되는 일반 네트워크 데이터 스트림이 아닌 추가 연결 끊기 옵션 데이터입니다. 이 옵션은 DECNet, OSI TP4 등의 레거시 프로토콜에서 사용됩니다. 이 옵션은 Windows의 TCP/IP 프로토콜에서 지원되지 않습니다.
SO_DISCOPTLEN DWORD 연결 연결을 끊기 위해 네트워크 요청과 함께 전송되는 일반 네트워크 데이터 스트림이 아닌 추가 연결 끊기 옵션 데이터의 길이(바이트)입니다. 이 옵션은 DECNet, OSI TP4 등의 레거시 프로토콜에서 사용됩니다. 이 옵션은 Windows의 TCP/IP 프로토콜에서 지원되지 않습니다.
SO_DEBUG DWORD(부울) 디버그 출력을 사용하도록 설정합니다. Microsoft 공급자는 현재 디버그 정보를 출력하지 않습니다.
SO_DONTLINGER DWORD(부울) 소켓과 연결된 느린 구조체의 l_onoff 멤버 상태를 나타냅니다. 이 멤버가 0이 아닌 경우 대기 중인 데이터를 보낼 수 있도록 closesocket 함수를 호출한 후 지정된 시간 동안 소켓이 열린 상태로 유지됩니다. 이 옵션은 신뢰할 수 있는 연결 지향 프로토콜에만 유효합니다.
SO_DONTROUTE DWORD(부울) 보내는 데이터는 소켓이 바인딩된 인터페이스에 전송되어야 하며 다른 인터페이스에서는 라우팅되지 않음을 나타냅니다. 이 옵션은 메시지 지향 프로토콜에 대해서만 유효합니다. Microsoft 공급자는 이 옵션을 자동으로 무시하고 항상 라우팅 테이블을 참조하여 적절한 나가는 인터페이스를 찾습니다.
SO_ERROR DWORD 이 소켓의 마지막 오류 코드를 반환합니다. 소켓당 이 오류 코드가 항상 즉시 설정되는 것은 아닙니다.
SO_EXCLUSIVEADDRUSE DWORD(부울) 다른 소켓이 동일한 주소 및 포트에 바인딩되지 않도록 합니다. 바인딩 함수를 호출하기 전에 이 옵션을 설정해야 합니다. 자세한 내용은 SO_EXCLUSIVEADDRUSE 참조를 참조하세요.
SO_GROUP_ID 부호 없는 정수 이 소켓 옵션은 예약되어 있으며 사용하지 않아야 합니다.
SO_GROUP_PRIORITY int 이 소켓 옵션은 예약되어 있으며 사용하지 않아야 합니다.
SO_KEEPALIVE DWORD(부울) 소켓 연결에 대해 연결 유지를 사용하도록 설정합니다. 연결 유지(연결 지향 프로토콜)의 개념을 지원하는 프로토콜에만 유효합니다. TCP의 경우 기본 연결 유지 시간 제한은 2시간이고 유지 간격은 1초입니다. 활성 상태 유지 프로브의 기본 수는 Windows 버전에 따라 달라집니다. 자세한 내용은 SO_KEEPALIVE 참조를 참조하세요.
SO_LINGER 구조체 느린 소켓과 연결된 느린 구조체의 상태를 나타냅니다. 느린 구조체의 l_onoff 멤버가 0이 아닌 경우 대기 중인 데이터를 보낼 수 있도록 closesocket 함수를 호출한 후 소켓이 지정된 시간 동안 열린 상태로 유지됩니다. 여는 구조체의 l_linger 멤버에서 열린 상태로 유지할 시간(초 )을 지정 합니다. 이 옵션은 신뢰할 수 있는 연결 지향 프로토콜에만 유효합니다.
SO_MAX_MSG_SIZE DWORD 프로토콜에서 지원하는 메시지 지향 소켓의 최대 아웃바운드 메시지 크기를 반환합니다. 스트림 지향 소켓에는 의미가 없습니다.
SO_MAXDG DWORD 프로토콜에서 지원하는 아웃바운드 데이터그램의 최대 크기(바이트)를 반환합니다. 이 소켓 옵션은 스트림 지향 소켓에 아무런 의미가 없습니다.
SO_MAXPATHDG DWORD 프로토콜에서 지원하는 아웃바운드 데이터그램의 최대 크기(바이트)를 지정된 대상 주소로 반환합니다. 이 소켓 옵션은 스트림 지향 소켓에 아무런 의미가 없습니다. Microsoft 공급자는 자동으로 이를 SO_MAXDG 처리할 수 있습니다.
SO_OOBINLINE DWORD(부울) 바인딩되지 않은 데이터가 일반 데이터와 함께 인라인으로 반환되어야 했음을 나타냅니다. 이 옵션은 대역 외 데이터를 지원하는 연결 지향 프로토콜에만 유효합니다.
SO_OPENTYPE DWORD 설정되면 생성되는 후속 소켓이 겹치지 않는지 여부에 영향을 줍니다. 이 옵션의 가능한 값은 SO_SYNCHRONOUS_ALERT SO_SYNCHRONOUS_NONALERT. 이 옵션을 사용하면 안 됩니다. 대신 WSASocket 함수를 사용하고 dwFlags 매개 변수에 WSA_FLAG_OVERLAPPED 비트를 끕니다.
SO_PAUSE_ACCEPT DWORD(부울) 수신 대기 소켓에 이 옵션을 사용합니다. 옵션을 설정하면 소켓은 RST를 수락하는 대신 들어오는 모든 연결에 응답합니다.
SO_PORT_SCALABILITY DWORD(부울) 로컬 컴퓨터에서 다른 로컬 주소 포트 쌍에 대해 와일드카드 포트를 여러 번 할당하여 포트 할당을 최대화하여 소켓에 대한 로컬 포트 확장성을 사용하도록 설정합니다. 두 옵션을 모두 사용할 수 있는 플랫폼에서는 이 옵션 대신 SO_REUSE_UNICASTPORT 선호합니다. 자세한 내용은 SO_PORT_SCALABILITY 참조를 참조하세요.
SO_PROTOCOL_INFO WSAPROTOCOL_INFO 이 옵션은 유니코드 매크로가 정의된 경우 SO_PROTOCOL_INFOW 소켓 옵션에 정의됩니다. UNICODE 매크로가 정의되지 않은 경우 이 옵션은 SO_PROTOCOL_INFOA 소켓 옵션에 정의됩니다.
SO_PROTOCOL_INFOA WSAPROTOCOL_INFOA 지정된 소켓의 WSAPROTOCOL_INFOA 구조를 반환합니다.
SO_PROTOCOL_INFOW WSAPROTOCOL_INFOW 지정된 소켓의 WSAPROTOCOL_INFOW 구조를 반환합니다.
SO_RANDOMIZE_PORT DWORD(부울) 이 옵션은 언바운드 소켓에서 설정해야 합니다. SO_RANDOMIZE_PORT 설정되고 소켓에서 임시 포트를 선택하면 임의 포트 번호가 바인딩됩니다. 포트 자동 재사용(SO_REUSE_UNICASTPORT 사용하여 선택한 포트)도 반환된 포트를 임의로 지정하므로 애플리케이션이 SO_REUSE_UNICASTPORT 설정한 다음 SO_RANDOMIZE_PORT 설정하려고 하면 두 번째 setsockopt 호출이 실패합니다.
SO_RCVBUF DWORD 수신을 위해 예약된 총 소켓당 버퍼 공간입니다. 이는 SO_MAX_MSG_SIZE 관련이 없으며 TCP 수신 창의 크기와 반드시 일치하지는 않습니다.
SO_RCVLOWAT DWORD 이전 버전과의 호환성을 위해 포함된 BSD UNIX의 소켓 옵션입니다. 이 옵션은 소켓 입력 작업에 대해 처리할 최소 바이트 수를 설정합니다. 이 옵션은 Windows TCP/IP 공급자에서 지원되지 않습니다. 이 옵션을 Windows Vista 이상에서 사용하는 경우 wSAEINVAL에서 getsockoptsetsockopt 함수가 실패합니다. 이전 버전의 Windows에서는 이러한 함수가 WSAENOPROTOOPT로 실패합니다.
SO_RCVTIMEO DWORD 수신 호출을 차단하기 위한 시간 제한(밀리초)입니다. 이 옵션의 기본값은 0입니다. 이는 수신 작업이 시간 초과되지 않음을 나타냅니다. 차단 수신 호출 시간이 초과되면 연결이 확정되지 않은 상태이며 닫혀야 합니다.
WSASocket 함수를 사용하여 소켓을 만든 경우 dwFlags 매개 변수에는 시간 제한이 제대로 작동하려면 WSA_FLAG_OVERLAPPED 특성이 설정되어 있어야 합니다. 그렇지 않으면 시간 제한이 적용되지 않습니다.
SO_REUSEADDR DWORD(부울) 소켓이 이미 사용 중인 주소 및 포트에 바인딩할 수 있습니다. SO_EXCLUSIVEADDRUSE 옵션은 이를 방지할 수 있습니다.
SO_REUSE_UNICASTPORT DWORD(부울) 설정되면 ConnectEx와 같은 명시적 바인딩이 필요한 Winsock API 연결 함수에 임시 포트 재사용을 허용합니다. 암시적 바인딩이 있는 연결 함수(예: 명시적 바인딩 없이 연결)에는 기본적으로 이 옵션이 설정되어 있습니다. 둘 다 사용할 수 있는 플랫폼에서 SO_PORT_SCALABILITY 대신 이 옵션을 사용합니다.
SO_REUSE_MULTICASTPORT DWORD 소켓에 설정된 경우 이 옵션은 소켓이 유니캐스트 패킷을 수신하는 데 사용되지 않으며, 따라서 해당 포트를 다른 멀티캐스트 전용 애플리케이션과 공유할 수 있음을 나타냅니다. 값을 1로 설정하면 항상 포트에서 멀티캐스트 트래픽을 공유할 수 있습니다. 값을 0(기본값)으로 설정하면 이 동작이 비활성화됩니다.
SO_SNDBUF DWORD 송신을 위해 예약된 총 소켓당 버퍼 공간입니다. 이는 SO_MAX_MSG_SIZE 관련이 없으며 TCP 송신 창의 크기와 반드시 일치하지는 않습니다.
SO_SNDLOWAT DWORD 이전 버전과의 호환성을 위해 포함된 BSD UNIX의 소켓 옵션입니다. 이 옵션은 소켓 출력 작업에 대해 처리할 최소 바이트 수를 설정합니다. 이 옵션은 Windows TCP/IP 공급자에서 지원되지 않습니다. 이 옵션을 Windows Vista 이상에서 사용하는 경우 wSAEINVAL에서 getsockoptsetsockopt 함수가 실패합니다. 이전 버전의 Windows에서는 이러한 함수가 WSAENOPROTOOPT로 실패합니다.
SO_SNDTIMEO DWORD 송신 호출을 차단하기 위한 시간 제한(밀리초)입니다. 이 옵션의 기본값은 0입니다. 이는 보내기 작업이 시간 초과되지 않음을 나타냅니다. 차단 송신 호출 시간이 초과되면 연결이 확정되지 않은 상태이며 닫혀야 합니다.
WSASocket 함수를 사용하여 소켓을 만든 경우 dwFlags 매개 변수에는 시간 제한이 제대로 작동하려면 WSA_FLAG_OVERLAPPED 특성이 설정되어 있어야 합니다. 그렇지 않으면 시간 제한이 적용되지 않습니다.
SO_TYPE DWORD 지정된 소켓의 소켓 유형을 반환합니다(예: SOCK_STREAM 또는 SOCK_DGRAM).
SO_UPDATE_ACCEPT_CONTEXT DWORD(부울) 이 옵션은 AcceptEx 함수와 함께 사용됩니다. 이 옵션은 수신 대기 소켓에서 상속되는 소켓의 속성을 업데이트합니다. getpeername, getsockname, getsockopt 또는 setsockopt 함수를 허용된 소켓에서 사용할 경우 이 옵션을 설정해야 합니다.
SO_UPDATE_CONNECT_CONTEXT DWORD(부울) 이 옵션은 ConnectEx, WSAConnectByListWSAConnectByName 함수와 함께 사용됩니다. 이 옵션은 연결이 설정된 후 소켓의 속성을 업데이트합니다. getpeername, getsockname, getsockopt, setsockopt 또는 shutdown 함수를 연결된 소켓에서 사용할 경우 이 옵션을 설정해야 합니다.
SO_USELOOPBACK DWORD(부울) 이 소켓에서 데이터를 보낼 때 로컬 루프백 주소를 사용합니다. 이 옵션은 전송된 모든 데이터도 로컬로 수신되는 경우에만 사용해야 합니다. 이 옵션은 Windows TCP/IP 공급자에서 지원되지 않습니다. 이 옵션을 Windows Vista 이상에서 사용하는 경우 wSAEINVAL에서 getsockoptsetsockopt 함수가 실패합니다. 이전 버전의 Windows에서는 이러한 함수가 WSAENOPROTOOPT로 실패합니다.

SOL_SOCKET 옵션에 대한 Windows 지원

옵션 Windows 10 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP Windows 2000 Windows NT4 Windows 9x/ME
PVD_CONFIG
SO_ACCEPTCONN x x x x x x x x x
SO_BROADCAST x x x x x x x x x
SO_BSP_STATE x x x x
SO_CONDITIONAL_ACCEPT x x x x x x x
SO_CONNDATA x x x x x x x x
SO_CONNDATALEN x x x x x x x x
SO_CONNECT_TIME x x x x x x x x x
SO_CONNOPT x x x x x x x x
SO_CONNOPTLEN x x x x x x x x
SO_DISCDATA x x x x x x x x
SO_DISCDATALEN x x x x x x x x
SO_DISCOPT x x x x x x x x
SO_DISCOPTLEN x x x x x x x x
SO_DEBUG x x x x x x x x x
SO_DONTLINGER x x x x x x x x x
SO_DONTROUTE x x x x x x x x x
SO_ERROR x x x x x x x x x
SO_EXCLUSIVEADDRUSE x x x x x x x x SP4+
SO_GROUP_ID x x x x
SO_GROUP_PRIORITY x x x x
SO_KEEPALIVE x x x x x x x x x
SO_LINGER x x x x x x x x x
SO_MAX_MSG_SIZE x x x x x x x x x
SO_MAXDG x x x x x x x
SO_MAXPATHDG x x x x x x x
SO_OOBINLINE x x x x x x x x x
SO_OPENTYPE x x x x x x x x x
SO_PORT_SCALABILITY x x x
SO_PROTECT x
SO_PROTOCOL_INFO x x x x x x x x x
SO_PROTOCOL_INFOA x x x x x x x x x
SO_PROTOCOL_INFOW x x x x x x x x x
SO_RCVBUF x x x x x x x x x
SO_RCVLOWAT
SO_RCVTIMEO x x x x x x x x x
SO_RANDOMIZE_PORT x x x x
SO_REUSEADDR x x x x x x x x x
SO_REUSE_UNICASTPORT x
SO_REUSE_MULTICASTPORT x
SO_SNDBUF x x x x x x x x x
SO_SNDLOWAT
SO_SNDTIMEO x x x x x x x x x
SO_TYPE x x x x x x x x x
SO_UPDATE_ACCEPT_CONTEXT x x x x x x x x
SO_UPDATE_CONNECT_CONTEXT x x x x x x
SO_USELOOPBACK

설명

SOL_SOCKET 소켓 옵션은 여러 Winsock 헤더 파일에 정의되어 있습니다.

  • Winsock2.h
  • Mswsock.h
  • Ws2def.h

Windows Vista 이상용으로 릴리스된 Microsoft Windows SDK(소프트웨어 개발 키트)에서 헤더 파일의 organization 변경되었으며 SOL_SOCKET 수준은 Winsock2.h 헤더 파일에 자동으로 포함된 Ws2def.h 헤더 파일에 정의됩니다. SOL_SOCKET 소켓 옵션 중 일부는 Winsock2.hMswsock.h 헤더 파일에 정의되어 있습니다. 나머지 SOL_SOCKET 소켓 옵션은 Winsock2.h 헤더 파일에 자동으로 포함되는 Ws2def.h 헤더 파일에 정의됩니다. Ws2def.h는 직접 사용하면 안 됩니다.

Windows Server 2003 및 Windows XP용으로 릴리스된 플랫폼 SDK(소프트웨어 개발 키트)에서 SOL_SOCKET 수준은 Winsock2.h 헤더 파일에 정의됩니다. SOL_SOCKET 소켓 옵션은 Winsock2.hMswsock.h 헤더 파일에 정의되어 있습니다.

요구 사항

요구 사항
헤더
Winsock2.h;
Mswsock.h;
Ws2def.h(Winsock2.h 포함)