CAsyncSocket::SetSockOpt
Эта функция-член вызывается для установки параметров сокета.
BOOL SetSockOpt(
int nOptionName,
const void* lpOptionValue,
int nOptionLen,
int nLevel = SOL_SOCKET
);
Параметры
nOptionName
Параметр сокета, для которого необходимо задать значение.lpOptionValue
Указатель на буфер, в котором указано значение для параметра.nOptionLen
Размер буфера lpOptionValue в байтах.nLevel
Уровень, на котором определен параметр. единственные поддерживаемые уровни SOL_SOCKET и IPPROTO_TCP.
Возвращаемое значение
Ненулевой если функция успешно; в противном случае – значение 0, а конкретный код ошибки могут быть восстановлены путем вызова GetLastError. Об ошибке применяемых к данному функции-члену.
WSANOTINITIALISED А успешное AfxSocketInit должно произойти перед использованием этого API.
Реализация Windows WSAENETDOWN sockets обнаружила, что подсистема сети.
WSAEFAULT lpOptionValue не является допустимой частью адресного пространства процесса.
WSAEINPROGRESS А операция блокировки Windows sockets выполняется.
WSAEINVAL nLevel является недопустимым или данные в lpOptionValue недопустимо.
Соединение WSAENETRESET истекло время ожидания при SO_KEEPALIVE установлено.
WSAENOPROTOOPT Параметр неизвестен или не поддерживается. В частности, SO_BROADCAST не поддерживается на гнездах типа SOCK_STREAM, пока SO_DONTLINGER, SO_KEEPALIVE, SO_LINGER и SO_OOBINLINE не поддерживаются в гнездах типа SOCK_DGRAM.
Соединение WSAENOTCONN сброшено при SO_KEEPALIVE было установлено.
Не WSAENOTSOCK дескриптор сокета.
Заметки
SetSockOpt задает текущее значение для параметра сокета, связанного с гнездом любого типа, в любом состоянии. Хотя параметры могут существовать на нескольких уровнях протокола, эта спецификация определяет только параметры, которые существуют в uppermost уровне "сокета". Операции сокета, влияют на параметры, как получаются ли ускорянные данные в обычном потоке данных, может ли широковещательные сообщения можно отправлять на сокете и т д
2 Типа параметров сокета. Логические параметры, которые включают или отключить функцию или расширения функциональности и параметры, требующие значения целого числа или составляющих. Включить логический параметр указывает lpOptionValue как значение целого числа. Отключение пунктов lpOptionValue параметра в целое число равных нулю. nOptionLen должно быть равно sizeof(BOOL) для логических параметров. Для других параметров точек lpOptionValue к целому числу или структуре, содержат требуемое значение для параметра и nOptionLen длина целого числа или структуры.
SO_LINGER контролирует действие, выполняемое, если неотправленные данные в очереди на сокете, и функция Закрыть называется, чтобы закрыть сокет.
По умолчанию когда сокет нельзя привязать (см. привязка) на локальный адрес, который уже используется. Однако иногда может быть желательно использовать повторно" адрес "таким образом. Поскольку каждое соединение однозначно определяется сочетанием локальным и удаленным адресом, это не создает проблем с иметь 2 сокета, привязанного к одному и тому же локальный адрес если удаленные адреса отличаются.
Для информирования реализацию Windows sockets, что вызов Привязка на сокете не должно быть запрещено, поскольку требуемый адрес уже используется другим гнездом приложение должно установить параметр сокета SO_REUSEADDR для создания сокета до вызова Привязка. Обратите внимание, что параметр интерпретируется только во время вызова Привязка : поэтому необязательно) (но невредно установить параметр для сокета, не привязанным к существующему адрес и установить или сбросить параметр после вызова Привязка не влияет на данном или любое другое сокета.
Приложение может запросить, что реализация Windows sockets разрешает использование "держать- живых" пакетов на соединений TCP (TCP), включить параметр сокета SO_KEEPALIVE. Windows sockets реализации не требуется поддерживать использование содержат - alives: если это так, явная реализация- но должна соответствовать семантике специфичные для распределять 4.2.3.6 стандарта RFC 1122. "Требования к интернет-узлов — уровни соединения". Если соединение удалено в результате ", сохраняйте - alives" код ошибки 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 |
Отключите Закрыть ожидания не в состоянии unsent данные, которые необходимо отправить. Установив этот параметр аналогичен SO_LINGER с l_onoff установите равным нулю. |
SO_DONTROUTE |
BOOL |
Не направить: отправить непосредственно к интерфейсу. |
SO_KEEPALIVE |
BOOL |
Send содержит - alives. |
SO_LINGER |
структура МЕДЛИТ |
Помедлите на Закрыть если неотправленные данных присутствуют. |
SO_OOBINLINE |
BOOL |
Получите экстренные данные в обычном потоке данных. |
SO_RCVBUF |
int |
Определить размер буфера для получения. |
SO_REUSEADDR |
BOOL |
Разрешить сокет для привязки к адресу, который уже используется. (См. привязка). |
SO_SNDBUF |
int |
Определить размер буфера для отправить. |
TCP_NODELAY |
BOOL |
Отключить алгоритм Nagle, используемый для отправки объединенных пакетов. |
Параметры berkeley software distribution (BSD) не поддерживается для SetSockOpt:
Значение |
Тип |
Значение |
---|---|---|
SO_ACCEPTCONN |
BOOL |
Сокет ожидает передачи данных |
SO_ERROR |
int |
Получает состояние ошибки и снимите флажок. |
SO_RCVLOWAT |
int |
Возвращает метку низкой воды. |
SO_RCVTIMEO |
int |
Возвращает время ожидания |
SO_SNDLOWAT |
int |
Отправьте метка низкой воды. |
SO_SNDTIMEO |
int |
Отправьте время ожидания. |
SO_TYPE |
int |
Тип сокета. |
IP_OPTIONS |
|
Задайте в поле параметры в заголовке IP. |
Требования
Header: afxsock.h