UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
FreeBSD-lap:Сервер отображает сообщения обо всех происходящих событиях (приеме входящего соединения, получении сообщения, завершении соединения).
FreeBSD-lap:<b>./sctpserv06</b>SCTP_ADAPTION_INDICATION:0x504c5253SCTP_ASSOC_CHANGE: COMMUNICATION UP, assoc=c99e2680hSCTP_SHUTDOWN_EVENT; assoc=c99e2680hSCTP_ASSOC_CHANGE: SHUTDOWN COMPLETE, assoc=c99e2680h<b>Control-C</b>Как видите, сервер действительно выводит сообщения обо всех происходящих событиях транспортного уровня.
23.5. Неупорядоченные данные
В обычном режиме SCTP обеспечивает надежную упорядоченную доставку данных. Кроме того, SCTP предоставляет и сервис надежной неупорядоченной доставки. Сообщение с флагом
MSG_UNORDEREDЛистинг 23.6. Функция sctp_strcli, отправляющая внеочередные данные
//sctp/sctp_strcli_un.c18 out_sz = strlen(sendline);19 Sctp_sendmsg(sock_fd, sendline, out_sz,20 to, tolen, 0, MSG_UNORDERED, sri.sinfo_stream, 0, 0);18-20sctp_str_cliMSG_UNORDEREDMSG_UNORDERED23.6. Связывание с подмножеством адресов
Некоторым приложениям требуется связывать один сокет с некоторым конкретным подмножеством всех адресов узла. Протоколы TCP и UDP не позволяют выделить подмножество адресов. Системный вызов
bindsctp_bindxbindbindsctp_bindxЛистинг 23.7. Функция, связывающая сокет с набором адресов
1 #include "unp.h" 2 int 3 sctp_bind_arg_list(int sock_fd, char **argv, int argc) 4 { 5 struct addrinfo *addr; 6 char *bindbuf, *p, portbuf[10]; 7 int addrcnt=0; 8 int i; 9 bindbuf = (char*)Calloc(argc, sizeof(struct sockaddr_storage));10 p = bindbuf;11 sprintf(portbuf, "%d", SERV_PORT);12 for (i=0; i<argc; i++ ) {13 addr = Host_serv(argv[i], portbuf, AF_UNSPEC, SOCK_SEQPACKET);14 memcpy(p, addr->ai_addr, addr->ai_addrlen);15 freeaddrinfo(addr);16 addrcnt++;17 p += addr->ai_addrlen;18 }19 Sctp_bindx(sock_fd, (SA*)bindbuf, addrent, SCTP_BINDX_ADD_ADDR);20 free(bindbuf);21 return(0);22 }9-10sctp_bindxsctp_bindxsockaddr_storagesctp_bindx11-18portbufgetaddrinfohost_servhost_servAF_UNSPECSOCK_SEQPACKETsockaddrsockaddr19sctp_bindx
