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