BOOL SetSockOpt ( int nOptionName, const void * lpOptionValue, int nOptionLen, int nLevel = SOL_SOCKET );
반환 값
이 함수는 성공 하는 경우 0이 아닌 그렇지 않으면 0, 그리고 특정 오류 코드를 사용 하는 GetLastError를 호출 하 여 검색할 수 있습니다. 이 멤버 함수에 다음과 같은 오류가 적용:
매개 변수
nOptionName
소켓 옵션 설정 값은。
lpOptionValue
요청한 옵션에 대 한 값을 제공 하는 버퍼에 대 한 포인터。
nOptionLen
바이트에서 lpOptionValue 버퍼의 크기。
nLevel
수준 있는 옵션이 정의 됩니다; 유일한 지원된 레벨은 SOL_SOCKET 및 IPPROTO_TCP。
주의
소켓 옵션을 설정 하려면이 멤버 함수를 호출 합니다. SetSockOpt 어떤 상태에서 어떤 종류의 socket과 관련 된 소켓 옵션에 대 한 현재 값을 설정 합니다. 옵션은 여러 개의 프로토콜 수준에서 존재할 수, 비록이 사양만 최고 "소켓" 수준에서 존재 하는 옵션을 정의 합니다. 옵션에 영향을 미칠 여부 긴급된 데이터 수신 일반 데이터 스트림 브로드캐스트 메시지를 소켓에 보내질 수 있다 기타 등등 여부와 같은 소켓 작업。
두 가지 방법으로의 socket 옵션: 기능이 나 동작을 사용할지 여부를 지정 하는 부울 옵션 및 정수 값 또는 구조를 필요로 하는 옵션. 부울 옵션을 설정 하려면 lpOptionValue 을 0이 아닌 정수로 가리킵니다. 옵션 lpOptionValue 포인트 0 같은 정수를 사용 하지 않도록 합니다. nOptionLen 부울 옵션에 대 한 sizeof(BOOL) 와 같아야 합니다. 다른 옵션에 대 한 lpOptionValue 포인트 정수 또는 옵션 및 nOptionLen 에 대 한 원하는 값이 포함 된 구조체를 정수 또는 구조체의 길이。
SO_LINGER 보내지 않은 데이터를 소켓에 대기 하 고 소켓을 닫을 수 닫기 함수를 호출할 때 수행 하는 작업을 제어 합니다. 자세한 내용은 참조 Win32 SDK 설명서에서 Windows 소켓 프로그래밍 고려 사항。
기본적으로 소켓에 바인딩할 수 없습니다 ( 바인딩참조)가 이미 사용 하는 로컬 주소. 그러나 때때로,, 그것은 수 있습니다 ""이 방법으로 주소를 재사용 하는 것이 바람직한. 모든 연결이 로컬 및 원격 주소의 조합으로 식별 됩니다 이후 거기에 아무 문제 만큼 원격 주소 다른 동일한 로컬 주소에 바인딩된 두 개의 소켓을 갖는。
Windows 소켓 구현에 알립니다 원하는 주소를 이미 다른 소켓에 의해 사용 중 이므로 소켓 바인딩 호출을 허용 하지 한다, 응용 프로그램 바인딩 호출을 발급 하기 전에 소켓 SO_REUSEADDR 소켓 옵션을 설정 해야 합니다. 참고 옵션은 바인딩 호출의 시간에만 해석 됩니다: 그것은 따라서 (하지만 무해) 필요한 기존 주소에 바인딩된 것은 소켓 옵션을 설정 하 고 전화에 이것에 영향을 주지 않습니다 또는 다른 소켓을 설정 하거나 바인딩 후에 옵션을 재설정。
응용 프로그램이 Windows 소켓 구현이 SO_KEEPALIVE 소켓 옵션을 설정 하 여 "keep-alive" 패킷 전송 제어 프로토콜 (TCP) 연결에 사용할 수 있도록 요청할 수 있습니다. ("Keep-alive" 패킷에 대 한 자세한 참조 Win32 SDK 설명서에서 Windows 소켓 프로그래밍 고려 합니다.) Windows 소켓 구현에 연결 유지를 사용 하 여 지원 하지 필요: 그것 않으면 정확한 의미는 구현 하지만 RFC 1122 4.2.3.6 절을 따라야 합니다: "인터넷 호스트에 대 한 요구 사항-통신 레이어 합니다." 결과적으로 연결이 "keep-alive" 오류 코드 WSAENETRESET 반환 됩니다 진행 중인 모든 호출을 소켓에 고 WSAENOTCONN 와 함께 모든 후속 호출 실패。
TCP_NODELAY 옵션 월리 알고리즘을 비활성화합니다. 월리 알고리즘 큰 패킷을 보낼 수 때까지 승인 되지 않은 보내기 데이터를 버퍼링 하 여 호스트에서 전송 하는 작은 패킷 수를 줄이기 위해 사용 됩니다. 그러나, 일부 응용 프로그램에 대 한이 알고리즘 성능, 방해 수 있습니다 그리고 TCP_NODELAY 을 사용 하 여 그것을 해제할 수 있습니다. 않으면 하 고 영향 그렇게 개방적이 고 원하는 TCP_NODELAY 설정 네트워크 성능에 상당한 부정적인 영향을 미칠 수 있으므로 응용 프로그램 작성자 TCP_NODELAY 을 설정 해야 합니다. TCP_NODELAY 는 유일한 레벨 IPPROTO_TCP;을 사용 하는 소켓 옵션 지원 다른 모든 옵션 사용 수준 SOL_SOCKET。
응용 프로그램에서 SO_DEBUG 옵션이 설정 되어 있으면 디버그 정보를 출력 하는 Windows 소켓 공급의 일부 구현。
SetSockOpt다음 옵션이 지원 됩니다. LpOptionValue 에 의해 해결 하는 데이터의 형식을 식별 하는 Type。
| 값 | 유형 | 의미 |
| SO_BROADCAST | BOOL | 소켓에 브로드캐스트 메시지의 전송을 허용합니다。 |
| SO_DEBUG | BOOL | 디버깅 정보 기록。 |
| SO_DONTLINGER | BOOL | 닫기 보내지 않은 데이터에 대 한 대기를 보낼 수 차단 하지 마십시오. 이 옵션을 설정 하는 것은 l_onoff 를 0으로 설정 된 SO_LINGER 를 설정 하는 것과 같습니다. |
| SO_DONTROUTE | BOOL | 라우팅 하지 마십시오: 인터페이스에 직접 보내기。 |
| SO_KEEPALIVE | BOOL | Keep-alive 보내기。 |
| SO_LINGER | lINGER 구조체 | 보내지 않은 데이터가 있으면 닫기 에 머무르게。 |
| SO_OOBINLINE | BOOL | 일반 데이터 스트림에서-밴드 데이터 수신。 |
| SO_RCVBUF | int | 버퍼 크기를 받는 지정。 |
| SO_REUSEADDR | BOOL | 사용에 이미 있는 주소에 바인딩된 소켓을 허용 합니다. ( 바인딩참조.) |
| SO_SNDBUF | int | 전송 버퍼 크기 지정。 |
| TCP_NODELAY | BOOL | 보내기 병합에 대 한 월리 알고리즘을 사용 하지 않도록 설정。 |
SetSockOpt 지원 되지 버클리 소프트웨어 배포 (BSD) 옵션:
| 값 | 유형 | 의미 |
| SO_ACCEPTCONN | BOOL | 소켓 수신 |
| SO_ERROR | int | 오류 상태 및 취소。 |
| SO_RCVLOWAT | int | 하위 워터 마크를 수신。 |
| SO_RCVTIMEO | int | 수신 시간 제한 |
| SO_SNDLOWAT | int | 하위 워터 마크를 보내기。 |
| SO_SNDTIMEO | int | 보내기 시간 제한。 |
| SO_TYPE | int | 소켓의 종류。 |
| IP_OPTIONS | IP 헤더에 설정된 옵션 필드。 |
CAsyncSocket 개요 |nbsp; 클래스 멤버 (ko) | 계층 구조 차트(&N)
참고 항목nbsp;CAsyncSocket::AsyncSelect, CAsyncSocket::Bind, CAsyncSocket::Create, CAsyncSocket::GetSockOpt, CAsyncSocket::IOCtl(&N)