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

Здесь есть возможность читать онлайн «Уильям Стивенс - UNIX - разработка сетевых приложений» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 2007, ISBN: 2007, Издательство: Питер, Жанр: ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «UNIX: разработка сетевых приложений»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «UNIX: разработка сетевых приложений», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

9.4. Функция sctp_connectx

#include

int sctp_connectx(int sockfd , const struct sockaddr * addrs , int addrcnt );

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

Функция sctp_connectxиспользуется для соединения с многоинтерфейсным узлом. При ее вызове мы должны указать адреса собеседника в параметре addrs(количество адресов определяется параметром addrcnt). Формат структуры addrsпредставлен на рис. 9.3. Стек SCTP устанавливает ассоциацию, используя один или несколько адресов из переданного списка. Все адреса addrsсчитаются действующими и подтвержденными.

9.5. Функция sctp_getpaddrs

Функция getpeernameне предназначена для использования протоколом, рассчитанным на работу с многоинтерфейсными узлами. Для сокетов SCTP она способна вернуть лишь основной адрес собеседника. Если нужны все адреса, следует вызывать функцию sctp_getpaddrs.

#include

int sctp_getpaddrs(int sockfd , sctp_assoc_t id , struct sockadrrd ** addrs );

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

Аргумент sockfdпредставляет собой дескриптор сокета, возвращаемый функцией socket. Второй аргумент задает идентификатор ассоциации для сокетов типа «один-ко-многим». Для сокетов типа «один-к-одному» этот аргумент игнорируется. addrs — адрес указателя, который функция sctp_getpaddrsзаполнит упакованным списком адресов, выделив под него локальный буфер (см. рис. 9.3 и листинг 23.12). Для освобождения буфера, созданного sctp_getpaddrs, следует использовать вызов sctp_freepaddrs.

9.6. Функция sctp_freepaddrs

Функция sctp_freepaddrsосвобождает ресурсы, выделенные вызовом sctp_getpaddrs.

#include

void sctp_freepaddrs(struct sockaddr * addrs );

Здесь аргумент addrs— указатель на массив адресов, возвращаемый sctp_getpaddrs.

9.7. Функция sctp_getladdrs

Функция sctp_getladdrsможет использоваться для получения списка локальных адресов, относящихся к определенной ассоциации. Эта функция бывает необходима в тех случаях, когда приложению требуется узнать, какие именно локальные адреса оно использует (набор адресов, напомним, может быть произвольным подмножеством всех адресов системы).

#include

int sctp_getladdrs(int sockfd , sctp_assoc_t id , struct sockaddr ** addrs );

Возвращает: количество локальных адресов, помещенных в addrs, или -1 в случае ошибки.

Здесь sockfd— дескриптор сокета, возвращаемый функцией socket. Аргумент id — идентификатор ассоциации для сокетов типа «один-ко-многим». Поле idигнорируется для сокетов типа «один-к-одному». Параметр представляет собой адрес указателя на буфер, выделяемый и заполняемый функцией sctp_getladdrs. В этот буфер помещается упакованный список адресов. Структура списка представлена на рис. 9.3 и в листинге 23.12. Для освобождения буфера процесс должен вызвать функцию sctp_freeladdrs.

9.8. Функция sctp_freeladdrs

Функция sctp_freeladdrsосвобождает ресурсы, выделенные при вызове sctp_getladdrs.

#include

void sctp_freeladdrs(struct sockaddr * addrs );

Здесь addrsуказывает на список адресов, возвращаемый sctp_getladdrs.

9.9. Функция sctp_sendmsg

Приложение может управлять параметрами SCTP, используя функцию sendmsgсо вспомогательными данными (см. главу 14). Однако из-за неудобств, связанных с применением вспомогательных данных, многие реализации SCTP предоставляют дополнительный библиотечный вызов (который на самом деле может быть и системным вызовом), упрощающий обращение к расширенным функциям SCTP. Вызов функции должен иметь следующий формат:

ssize_t sctp_sendmsg(int sockfd , const void * msg , size_t msgsz ,

const struct sockaddr * to , socklen_t tolen , uint32_t ppid ,

uint32_t flags , uint16_t stream , uint32_t timetolive ,

uint32_t context );

Возвращает: количество записанных байтов в случае успешного завершения, -1 в случае ошибки

Использование sctp_sendmsgзначительно упрощает отправку параметров, но требует указания большего количества аргументов. В поле sockfdпомещается дескриптор сокета, возвращенный системным вызовом socket. Аргумент msgуказывает на буфер размера msgsz, содержимое которого должно быть передано собеседнику. В поле tolenпомещается длина адреса, передаваемого через аргумент to. В поле ppidпомещается идентификатор протокола, который будет передан вместе с порцией данных. Поле flagsпередается стеку SCTP. Разрешенные значения этого поля приводятся в табл. 7.5.

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

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «UNIX: разработка сетевых приложений» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «UNIX: разработка сетевых приложений» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x