CAsyncSocket::SetSockOpt

BOOL SetSockOpt ( int nOptionName, const void * lpOptionValue, int nOptionLen, int nLevel = SOL_SOCKET );

반환 값

이 함수는 성공 하는 경우 0이 아닌 그렇지 않으면 0, 그리고 특정 오류 코드를 사용 하는 GetLastError를 호출 하 여 검색할 수 있습니다. 이 멤버 함수에 다음과 같은 오류가 적용:

매개 변수

nOptionName

소켓 옵션 설정 값은。

lpOptionValue

요청한 옵션에 대 한 값을 제공 하는 버퍼에 대 한 포인터。

nOptionLen

바이트에서 lpOptionValue 버퍼의 크기。

nLevel

수준 있는 옵션이 정의 됩니다; 유일한 지원된 레벨은 SOL_SOCKETIPPROTO_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)

Index