Поделиться через


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

См. также

Ссылки

Класс CAsyncSocket

Диаграмма иерархии

CAsyncSocket::AsyncSelect

CAsyncSocket::Bind

CAsyncSocket::Create

CAsyncSocket::GetSockOpt

CAsyncSocket::IOCtl