UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
78 ae = &snp->sn_adaption_event;79 printf("SCTP_ADAPTION_INDICATION: 0x%xn",80 (u_int)ae->sai_adaption_ind);81 break;82 case SCTP_PARTIAL_DELIVERY_EVENT:83 pdapi = &snp->sn_pdapi_event;84 if (pdapi->pdapi_indication == SCTP_PARTIAL_DELIVERY_ABORTED)85 printf("SCTP_PARTIAL_DELIEVERY_ABORTEDn");86 else87 printf("Unknown SCTP_PARTIAL_DELIVERY_EVENT 0x%xn",88 pdapi->pdapi_indication);89 break;90 case SCTP_SHUTDOWN_EVENT:91 sse = &snp->sn_shutdown_event;92 printf("SCTP_SHUTDOWN_EVENT: assoc=0x%xn",93 (uint32_t)sse->sse_assoc_id);94 break;95 default:96 printf("Unknown notification event type=0x%xn",97 snp->sn_header.sn_type);98 }99 }14-15sn_headersn_type16-4016-4067-71sre_datasctp_remote_error72-76ssf_data77-8182-8990-94Листинг 23.5. Сервер, обрабатывающий уведомления о событиях
//sctp/sctpserv06.c21 bzero(&evnts, sizeof(evnts));22 evnts.sctp_data_io_event = 1;23 evnts.sctp_association_event = 1;24 evnts.sctp_address_event = 1;25 evnts.sctp_send_failure_event = 1;26 evnts.sctp_peer_error_event = 1;27 evnts.sctp_shutdown_event = 1;28 evnts.sctp_partial_delivery_event = 1;29 evnts.sctp_adaption_layer_event = 1;30 Setsockopt(sock_fd, IPPROTO_SCTP, SCTP_EVENTS, &evnts, sizeof(evnts));31 Listen(sock_fd, LISTENQ);32 for (;;) {33 len = sizeof(struct sockaddr_in);34 rd_sz = Sctp_recvmsg(sock_fd, readbuf, sizeof(readbuf),35 (SA*)&cliaddr, &len, &sri, &msg_flags);36 if (msg_f1ags & MSG_NOTIFICATION) {37 print_notification(readbuf);38 continue;39 }21-3031-3536-39msg_flagssctp_print_notificationЗапуск программы
Мы запускаем клиент и отправляем одно сообщение.
FreeBSD-lap: <b>./sctpclient01 10.1.1.5</b><b>[0]Hello</b>From str:1 seq:0 (assoc:c99e15a0):[0]Hello<b>Control-D</b>
