SOL_SOCKET 소켓 옵션
다음 표에서는 SOL_SOCKET 소켓 옵션에 대해 설명합니다. 소켓 옵션을 가져오고 설정하는 방법에 대한 자세한 내용은 getsockopt 및 setsockopt 함수 참조 페이지를 참조하세요.
프로토콜을 열거하고 설치된 각 프로토콜에 대해 지원되는 속성을 검색하려면 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에서 getsockopt 및 setsockopt 함수가 실패합니다. 이전 버전의 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에서 getsockopt 및 setsockopt 함수가 실패합니다. 이전 버전의 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, WSAConnectByList 및 WSAConnectByName 함수와 함께 사용됩니다. 이 옵션은 연결이 설정된 후 소켓의 속성을 업데이트합니다. getpeername, getsockname, getsockopt, setsockopt 또는 shutdown 함수를 연결된 소켓에서 사용할 경우 이 옵션을 설정해야 합니다. | |
SO_USELOOPBACK | 예 | 예 | DWORD(부울) | 이 소켓에서 데이터를 보낼 때 로컬 루프백 주소를 사용합니다. 이 옵션은 전송된 모든 데이터도 로컬로 수신되는 경우에만 사용해야 합니다. 이 옵션은 Windows TCP/IP 공급자에서 지원되지 않습니다. 이 옵션을 Windows Vista 이상에서 사용하는 경우 wSAEINVAL에서 getsockopt 및 setsockopt 함수가 실패합니다. 이전 버전의 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.h 및 Mswsock.h 헤더 파일에 정의되어 있습니다. 나머지 SOL_SOCKET 소켓 옵션은 Winsock2.h 헤더 파일에 자동으로 포함되는 Ws2def.h 헤더 파일에 정의됩니다. Ws2def.h는 직접 사용하면 안 됩니다.
Windows Server 2003 및 Windows XP용으로 릴리스된 플랫폼 SDK(소프트웨어 개발 키트)에서 SOL_SOCKET 수준은 Winsock2.h 헤더 파일에 정의됩니다. SOL_SOCKET 소켓 옵션은 Winsock2.h 및 Mswsock.h 헤더 파일에 정의되어 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|