CAsyncSocket::SetSockOpt

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

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае 0 и код ошибки можно получить, вызвав функцию GetLastError. Следующие ошибки применяются к этой функции-члена:

Параметры

nOptionName

Параметр сокета, для которого устанавливается значение.

lpOptionValue

Указатель на буфер, в котором предоставляется значение запрошенного варианта.

nOptionLen

Размер lpOptionValue буфера в байтах.

nLevel

Уровень, на котором определен параметр; единственным поддерживаемым уровни являются SOL_SOCKET и IPPROTO_TCP.

Примечания

Вызов этой функции-члена для задания параметра socket. SetSockOpt устанавливает текущее значение для параметра сокета, связанные с socket любого типа в любом государстве. Параметры могут существовать на различных уровнях протокол, но эта спецификация только определяет параметры, которые существуют на уровне верхней «гнездо». Параметры влияют на сокет такие операции, как срочные данные получают ли в потоке обычных данных ли широковещательные сообщения могут быть отправлены на сокет и так далее.

Существует два типа параметров сокета: Boolean, включить или отключить функцию или поведение и которые требуют целочисленное значение или структуры. Чтобы задать логический параметр, lpOptionValue указывает на ненулевой целое число. Чтобы отключить параметр lpOptionValue указывает на целое равны нулю. nOptionLen должно быть равным sizeof(BOOL) для логических параметров. Для других вариантов lpOptionValue указывает целое число или структуру, содержащую нужное значение для параметра и nOptionLen — длина целого числа или структуры.

SO_LINGER управляет меры, когда очередь неотправленных данных на сокете и вызывается функция Закрыть для закрытия объекта socket. Для получения дополнительной информации, смотрите Соображения программирования Windows Sockets в документации Win32 SDK.

По умолчанию объект socket нельзя присоединить (см. Привязка) к локальному адресу, который уже используется. Иногда Однако, она может желательно «повторное» адрес таким образом. Так как каждая связь однозначно идентифицируется сочетанием локальных и удаленных адресов, нет никаких проблем с тем, что две розетки, обязан же локальный адрес, пока удаленные адреса разные.

Для информирования выполнения Windows Sockets не быть запрещено связывать звонок на сокете, потому что требуемый адрес уже используется в другом сокет, приложение параметр SO_REUSEADDR сокета для сокета до выдачи связывать звонок. Обратите внимание, что параметр интерпретируется только во время вызова привязки : Поэтому нет необходимости (но безвредны) для задания параметра на сокет, который не должен быть привязан к существующий адрес, и установка или сброс параметра после связывания звонок не влияет на этот или любой другой разъем.

Приложение может запросить выполнение Windows Sockets дают возможность использовать «keep-alive» пакетов на подключениях протокол управления передачей (TCP), включив параметр сокета SO_KEEPALIVE . (Сведения о «keep-alive» пакетах содержатся в разделе Соображения программирования Windows Sockets в документации Win32 SDK.) Реализация Windows Sockets нужно не поддерживает использование активность: если это так, точной семантики конкретные реализации, но должны соответствовать разделу 4.2.3.6 RFC 1122: "требования к Интернет-хостов-коммуникационные слои." Если в результате разрыве соединения из «активность» код ошибки WSAENETRESET возвращается все вызовы в процессе на сокет, и любые последующие вызовы метода приведут к сбою с WSAENOTCONN.

TCP_NODELAY опция отключает алгоритм Nagle. Алгоритм Nagle используется для сокращения числа мелких пакетов, отправляемых узлом буферизация негласно отправить данные, пока не могут быть отправлены полноразмерных пакет. Однако для некоторых приложений этот алгоритм может сказаться на производительности, и TCP_NODELAY может использоваться для отключения. Писатели приложения не следует устанавливать TCP_NODELAY , когда влияние делать так хорошо понятных и желаемого, так как параметр TCP_NODELAY может иметь значительное отрицательное влияние на производительность сети. TCP_NODELAY – единственный поддерживается параметр сокета, который использует уровень IPPROTO_TCP; все другие варианты использования уровня SOL_SOCKET.

Некоторые реализации Windows Sockets снабжения вывода отладочной информации, если параметр SO_DEBUG установлен в приложении.

SetSockOptподдерживают следующие параметры. Тип определяет тип данных, охватываемых lpOptionValue.

Значение Тип Значение
SO_BROADCAST BOOL Разрешить передачу широковещательных сообщений на сокете.
SO_DEBUG BOOL Запись отладочной информации.
SO_DONTLINGER BOOL Не блокируйте Закрыть ожидание неотправленных данных следует направлять. Установка этого параметра эквивалентен установке SO_LINGER с l_onoff равным нулю.
SO_DONTROUTE BOOL Не маршрут: отправить непосредственно в интерфейсе.
SO_KEEPALIVE BOOL Отправить активность.
SO_LINGER структура ожидания Задерживаться на тесном если неотправленные данные.
SO_OOBINLINE BOOL Получить данные-диапазона, в потоке обычных данных.
SO_RCVBUF int Укажите размер буфера для получает.
SO_REUSEADDR BOOL Позвольте socket, чтобы быть связанными в адрес, который уже используется. (См. Привязка).
SO_SNDBUF int Задайте размер буфера для отправки.
TCP_NODELAY BOOL Отключает алгоритм Nagle для отправки объединения.

Не поддерживается для 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; Члены класса | Иерархическая схема

См. также CAsyncSocket::AsyncSelect, CAsyncSocket::Bind, CAsyncSocket::Create, CAsyncSocket::GetSockOpt, CAsyncSocket::IOCtl

Index