Уильям Стивенс - UNIX: разработка сетевых приложений

Тут можно читать онлайн Уильям Стивенс - UNIX: разработка сетевых приложений - бесплатно ознакомительный отрывок. Жанр: comp-osnet, издательство Питер, год 2007. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    UNIX: разработка сетевых приложений
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2007
  • Город:
    Санкт-Петербург
  • ISBN:
    5-94723-991-4
  • Рейтинг:
    4.33/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Уильям Стивенс - UNIX: разработка сетевых приложений краткое содержание

UNIX: разработка сетевых приложений - описание и краткое содержание, автор Уильям Стивенс, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.

UNIX: разработка сетевых приложений - читать онлайн бесплатно ознакомительный отрывок

UNIX: разработка сетевых приложений - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Уильям Стивенс
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Глава 7

Параметры сокетов

7.1. Введение

Существуют различные способы получения и установки параметров сокетов:

■ функции getsockoptи setsockopt;

■ функция fcntl;

■ функция ioctl.

Эту главу мы начнем с описания функций getsockoptи setsockopt. Далее мы приведем пример, в котором выводятся заданные по умолчанию значения параметров, а затем дадим подробное описание всех параметров сокетов. Мы разделили описание параметров на следующие категории: общие, IPv4, IPv6, TCP и SCTP. При первом прочтении главы можно пропустить подробное описание параметров и при необходимости прочесть отдельные разделы, на которые даны ссылки. Отдельные параметры подробно описываются в дальнейших главах, например параметры многоадресной передачи IPv4 и IPv6 мы обсуждаем в разделе 19.5.

Мы также рассмотрим функцию fcntl, поскольку она реализует предусмотренные стандартом POSIX возможности отключить для сокета блокировку ввода-вывода, включить управление сигналами, а также установить владельца сокета. Функцию ioctlмы опишем в главе 17.

7.2. Функции getsockopt и setsockopt

Эти две функции применяются только к сокетам.

#include

int getsockopt(int sockfd , int level , int optname , void * optval , socklen_t * optlen );

int setsockopt(int sockfd , int level , int optname , const void * optval , socklen_t optlen );

Обе функции возвращают 0 в случае успешного завершения, -1 в случае ошибки

Переменная sockfdдолжна ссылаться на открытый дескриптор сокета. Переменная levelопределяет, каким кодом должен интерпретироваться параметр: общими программами обработки сокетов или зависящими от протокола программами (например, IPv4, IPv6, TCP или SCTP).

optval— это указатель на переменную, из которой извлекается новое значение параметра с помощью функции setsockoptили в которой сохраняется текущее значение параметра с помощью функции getsockopt. Размер этой переменной задается последним аргументом. Для функции setsockoptтип этого аргумента — значение , а для функции getsockopt— « значение-результат ».

В табл. 7.1 и 7.2 сведены параметры, которые могут запрашиваться функцией getsockoptили устанавливаться функцией setsockopt. В колонке «Тип данных» приводится тип данных того, на что указывает указатель optvalдля каждого параметра. Две фигурные скобки мы используем, чтобы обозначить структуру, например linger{}обозначает struct linger.

Таблица 7.1. Параметры сокетов для функций getsockopt и setsockopt

level optname get set Описание Флаг Тип данных
SOL_SOCKET SO_BROADCAST Позволяет посылать широковещательные дейтаграммы int
SO_DEBUG Разрешает отладку int
SO_DONTROUTE Обходит таблицу маршрутизации int
SO_ERROR Получает ошибку, ожидающую обработки, и возвращает значение параметра в исходное состояние int
SO_KEEPALIVE Периодически проверяет, находится ли соединение в рабочем состоянии int
SO_LINGER Задерживает закрытие сокета, если имеются данные для отправки linger{}
SO_OOBINLINE Оставляет полученные внеполосные данные вместе с обычными данными (inline) int
SO_RCVBUF Размер приемного буфера int
SO_SNDBUF Размер буфера отправки int
SO_RCVLOWAT Минимальное количество данных для приемного буфера сокета int
SO_SNDLOWAT Минимальное количество данных для буфера отправки сокета int
SO_RCVTIMEO Тайм-аут при получении timeval{}
SO_SNDTIMEO Тайм-аут при отправке timeval{}
SO_REUSEADDR Допускает повторное использование локального адреса int
SO_REUSEPORT Допускает повторное использование локального адреса int
SO_TYPE Возвращает тип сокета int
SO_USELOOPBACK Маршрутизирующий сокет получает копию того, что он отправляет int
IPPROTO_IP IP_HDRINCL Включается IP- заголовок int
IP_OPTIONS В заголовке IPv4 устанавливаются параметры IP см. текст
IP_RECVDSTADDR Возвращает IP-адрес получателя int
IP_RECVIF Возвращает индекс интерфейса, на котором принимается дейтаграмма UDP int
IP_TOS Тип сервиса и приоритет int
IP_TTL Время жизни int
IP_MULTICAST_IF Задает интерфейс для исходящих дейтаграмм in_addr{}
IP_MULTICAST_TTL Задает TTL для исходящих дейтаграмм u_char
IP_MULTICAST_LOOP Разрешает или отменяет отправку копии дейтаграммы на тот узел, откуда она была послана (loopback) u_char
IP_ADD_MEMBERSHIP Включение в группу многоадресной передачи ip_mreq{}
IP_DROP_MEMBERSHIP Отключение от группы многоадресной передачи ip_mreq{}
IP_{BLOCK, UNBLOCK}_SOURCE Блокирование и разблокирование источника многоадресной передачи ip_mreq_source{}
IP_{ADD, DROP}_SOURCE_MEMBERSHIP Присоединение или отключение от многоадресной передачи от источника (source-specific) ip_mreq_source{}
IPPROTO_ICMPV6 ICMP6_FILTER Указывает тип сообщения ICMPv6, которое передается процессу icmp6_filter{}
IPPROTO_IPV6 IPV6_ADDRFORM Меняет формат адреса сокета int
IPV6_CHECKSUM Отступ поля контрольной суммы для символьных (неструктурированных) сокетов int
IPV6_DONTFRAG Не фрагментировать, а сбрасывать большие пакеты int
IPV6_NEXTHOP Задает следующий транзитный адрес sockaddr{}
IPV6_PATHMTU Получение текущей маршрутной МТУ ip6_mtuinfo{}
IPV6_RECVDSTOPTS Получение параметров адресата int
IPV6_RECVHOPLIMIT Получение ограничения на количество транзитных узлов при направленной передаче int
IPV6_RECVHOPOPTS Получение параметров прыжков int
IPV6_RECVPATHMTU Получение маршрутной MTU int
IPV6_RECVPKTINFO Получение информации о пакетах int
IPV6_RECVRTHDR Получение маршрута от источника int
IPV6_RECVTCLASS Получение класса трафика int
IPV6_UNICAST_HOPS Предел количества транзитных узлов, задаваемый по умолчанию int
IPV6_USE_MIN_MTU Использовать минимальную MTU int
IPV6_V60NLY Отключить совместимость с IPv4 int
IPV6_XXX Вспомогательные данные см. текст
IPV6_MULTICAST_IF Задает интерфейс для исходящих дейтаграмм u_int
IPV6_MULTICAST_HOPS Задает предельное количество транзитных узлов для исходящих широковещательных сообщений int
IPV6_MULTICAST_LOOP Разрешает или отменяет отправку копии дейтаграммы на тот узел, откуда она была послана (loopback) u_int
IPV6_LEAVE_GROUP Выход из группы многоадресной передачи ipv6_mreq{}
IPPROTO_IP или IPPROTO_IPV6 MCAST_JOIN_GROUP Присоединение к группе многоадресной передачи group_req{}
MCAST_LEAVE_GROUP Выход из группы многоадресной передачи group_source_req{}
MCAST_BLOCK_SOURCE Блокирование источника многоадресной передачи group_source_req{}
MCAST_UNBLOCK_SOURCE Разблокирование источника многоадресной передачи group_source_req{}
MCAST_JOIN_SOURCE_GROUP Присоединение к группе многоадресной передачи от источника group_source_req{}
MCAST_LEAVE_SOURCE_GROUP Выход из группы многоадресной передачи от источника group_source_req{}

Таблица 7.2. Параметры сокетов транспортного уровня

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Уильям Стивенс читать все книги автора по порядку

Уильям Стивенс - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




UNIX: разработка сетевых приложений отзывы


Отзывы читателей о книге UNIX: разработка сетевых приложений, автор: Уильям Стивенс. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x