UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
<i>Возвращает: новое смещение в буфере databuf</i>Функция
inet6_opt_initextbufextlenФункция
inet6_opt_appendextbufoffsetinet6_opt_appendinet6_opt_inittypelenalignalignlendatabufpinet6_opt_set_valДля завершения расширяющего заголовка вызывается функция
inet6_opt_finishextbufinet6_opt_appendoffsetinet6_opt_appendinet6_opt_initinet6_opt_finishФункция
inet6_opt_set_valinet6_opt_appenddatabufinet6_opt_appendoffsetinet6_opt_set_valvalvallenПредполагается, что с помощью этих функций вы будете делать два прохода по списку параметров, которые вы предполагаете вставить: во время первого прохода будет вычисляться требуемая длина буфера, а во время второго прохода — выполняться фактическое построение буфера параметра. При первом проходе нужно вызвать
inet6_opt_initinet6_opt_appendinet6_opt_finishextbufextleninet6_opt_finishextbufinet6_opt_initinet6_opt_appendinet6_opt_set_valinet6_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_nextextbufextleninet6_opt_appendoffsetinet6_opt_nexttypeplenpdatabufpinet6_opt_next
