CAsyncSocket::SetSockOpt

BOOL Setsockopt вказано ( int nOptionName, константа порожнечу * lpOptionValue, int nOptionLen, int nLevel = SOL_SOCKET );

Значення, яке повертається

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

Параметри

nOptionName

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

lpOptionValue

Вказівник на буфер поставляється значень для потрібний параметр.

nOptionLen

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

nLevel

Рівні, на якій визначається параметром; Єдиний підтримуваний рівні є SOL_SOCKET і IPPROTO_TCP.

Зауваження

Телефонуйте цієї функції-члена, щоб установити параметр сокет. Setsockopt вказано встановлює поточне значення для socket опції, пов'язані з socket будь-якого типу, в будь-якої держави. Хоча варіантів може існувати кілька протоколом рівнів, це специфікація лише визначає параметри, які існують на рівні розміщеного "Гніздо". Параметри впливають на socket операції, зокрема від того, чи прискореної дані надходять у звичайному даних потоку, чи трансляцію повідомлень може бути направлений на сокет і так далі.

Існує два типи налаштувань socket: логічні параметри, що увімкнути або вимкнути функцію або поведінка та параметри, які вимагають ціле значення або структури. Щоб увімкнути логічні параметр, lpOptionValue вказує на ненульовим ціле число. Щоб вимкнути параметр lpOptionValue вказує ціле число дорівнює нулю. nOptionLen повинні бути дорівнює sizeof(BOOL) для логічних параметри. Інші параметри lpOptionValue пункти цілого або структура, яка містить потрібне значення для параметра і nOptionLen є довжина ціле число або структури.

SO_LINGER керує вжиті коли ненадіслані даних в черзі на сокеті і Закрити функція називається закрити сокет. Докладніше, перегляньте статтю Windows розетки програмування міркувань в документації Win32 SDK.

За замовчуванням є сокетом не можна зв'язати (див. Прив'язати) локальну адресу, яка вже використовується. З нагоди Однак, це може бути бажаним "використовувати" адреса таким чином. Оскільки кожен підключення однозначно ідентифікований поєднання локальних і віддалених адрес, немає ніяких проблем з наявністю двох розетки, прив'язуються до ж локальну адресу, як Віддалені адреси відрізняються.

Інформувати реалізація Windows Sockets що Прив'язати виклику на сокеті повинні не бути заборонено, оскільки бажану адресну уже використовує інший сокет, застосування повинні встановити параметр SO_REUSEADDR socket сокет до видачі зв'язати виклик. Зверніть увагу, що параметр інтерпретується лише під час виклику Прив'язати : тому непотрібних (але нешкідливий), щоб установити параметр на сокеті, яке не пов'язані існуючу адресу, і створення або скидання параметр після приєднання виклику не впливає на цьому або будь-який інший сокет.

Програма може запитати, що реалізація Windows Sockets дозволяють використовувати "keep-alive" пакетів на підключення протокол керування передаванням (TCP), перетворюючи на гніздо SO_KEEPALIVE опцію. (Докладніше про "keep-alive" пакетів, перегляньте Windows розетки програмування міркувань в документації Win32 SDK.) Реалізація Windows Sockets потрібно підтримує використання тримати alives: Якщо це так, Чітка семантика виконання конкретних, але повинні відповідати 4.2.3.6 розділ RFC 1122: "вимоги до Інтернет хости — зв'язку шари." Якщо з'єднання впала в результаті з "Зберегти alives" код помилки WSAENETRESET повертається на будь-які дзвінки в прогрес на сокет, і будь-які подальші дзвінки не вдасться з WSAENOTCONN.

TCP_NODELAY параметр вимикає раптом алгоритм. Раптом алгоритм використовується для зменшення кількості малих пакетів, відправленого на безліч буферизації невизнаних надіслати дані до повного розміру пакет можна надіслати. Однак, для деяких додатків цей алгоритм може перешкодити продуктивність, і TCP_NODELAY можуть бути використані, щоб вимкнути його. Застосування письменники не повинні встановити TCP_NODELAY , якщо вплив робити так добре розвинута і бажане, оскільки настройки TCP_NODELAY може мати значний негативний вплив на продуктивність мережі. TCP_NODELAY є тільки підтримується socket варіант, який використовує рівня 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 Надіслати тримати alives.
SO_LINGER структура ЗАТРИМУВАТИСЯ Затримуватися на Закрити , якщо ненадіслані даних.
SO_OOBINLINE BOOL Отримання даних-група в потоці дані нормалей.
SO_RCVBUF int Вкажіть розмір буфера для отримує.
SO_REUSEADDR BOOL Дозволити socket погоджуєтеся на адресу, яка вже використовується. (Див. Прив'язати).
SO_SNDBUF int Вкажіть розмір буфера для надсилання.
TCP_NODELAY BOOL Вимикає раптом алгоритм для надсилання, які зливаються.

Розповсюдження програмного забезпечення Берклі (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.

Огляд CAsyncSocket |nbsp; Члени класу | Ієрархічна діаграма

Дивіться також CAsyncSocket::AsyncSelect, CAsyncSocket::Bind, CAsyncSocket::Create, CAsyncSocket::GetSockOpt, CAsyncSocket::IOCtl

Index