UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
<i>Возвращает: новое смещение в буфере databuf</i>
Функция
inet6_opt_init
extbuf
extlen
Функция
inet6_opt_append
extbuf
offset
inet6_opt_append
inet6_opt_init
type
len
align
align
len
databufp
inet6_opt_set_val
Для завершения расширяющего заголовка вызывается функция
inet6_opt_finish
extbuf
inet6_opt_append
offset
inet6_opt_append
inet6_opt_init
inet6_opt_finish
Функция
inet6_opt_set_val
inet6_opt_append
databuf
inet6_opt_append
offset
inet6_opt_set_val
val
vallen
Предполагается, что с помощью этих функций вы будете делать два прохода по списку параметров, которые вы предполагаете вставить: во время первого прохода будет вычисляться требуемая длина буфера, а во время второго прохода — выполняться фактическое построение буфера параметра. При первом проходе нужно вызвать
inet6_opt_init
inet6_opt_append
inet6_opt_finish
extbuf
extlen
inet6_opt_finish
extbuf
inet6_opt_init
inet6_opt_append
inet6_opt_set_val
inet6_opt_finish
Оставшиеся три функции обрабатывают полученный параметр.
#include <netinet/in.h>
int inet6_opt_next(const void *<i>extbuf</i>, socklen_t <i>extlen</i>,
int <i>offset</i>, uint8_t *<i>typep</i>, socklen_t *<i>lenp</i>, void **<i>databufp</i>);
<i>Возвращает: смещение следующего параметра, -1 в случае достижения конца списка параметров или в случае ошибки</i>
int inet6_opt_find(const void *<i>extbuf</i>, socklen_t <i>extlen</i>,
int <i>offset</i>, uint8_t <i>type</i>, socklen_t *<i>lenp</i>, void **<i>databufp</i>);
<i>Возвращает: смещение следующего параметра, -1 в случае достижения конца списка параметров или в случае ошибки</i>
int inet6_opt_get_val(const void *<i>databuf</i>, int <i>offset</i>, void *<i>val</i>, socklen_t <i>vallen</i>);
<i>Возвращает: новое значение смещения внутри буфера databuf</i>
Функция
inet6_opt_next
extbuf
extlen
inet6_opt_append
offset
inet6_opt_next
typep
lenp
databufp
inet6_opt_next