10.4. Потоковый эхо-клиент SCTP: функция str_cli
Данный текст является ознакомительным фрагментом.
Данный текст является ознакомительным фрагментом.
5.4. Эхо-клиент TCP: функция main В листинге 5.3 показана функция main TCP-клиента.Листинг 5.3. Эхо-клиент TCP//tcpcliserv/tcpcli01.c 1 #include "unp.h" 2 int 3 main(int argc, char **argv) 4 { 5 int sockfd; 6 struct sockaddr_in servaddr; 7 if (argc != 2) 8 err_quit("usage: tcpcli <Ipaddress>"); 9 sockfd = Socket(AF_INET, SOCK_STREAM, 0);10 bzero(&servaddr. sizeof(servaddr));11 servaddr.sin_family
5.5. Эхо-клиент TCP: функция str_cli Эта функция, показанная в листинге 5.4, обеспечивает отправку запроса клиента и прием ответа сервера в цикле. Функция считывает строку текста из стандартного потока ввода, отправляет ее серверу и считывает отраженный ответ сервера, после чего
6.4. Функция str_cli (продолжение) Теперь мы можем переписать нашу функцию str_cli, представленную в разделе 5.5 (на этот раз используя функцию select), таким образом, чтобы мы получали уведомление, как только завершится процесс сервера. Проблема с предыдущей версией состояла в том,
6.7. Функция str_cli (еще раз) В листинге 6.2 представлена наша обновленная (и корректная) функция str_cli. В этой версии используются функции select и shutdown. Первая уведомляет нас о том, когда сервер закрывает свой конец соединения, а вторая позволяет корректно обрабатывать пакетный
7.10. Параметры сокетов SCTP Относительно большое количество параметров, определенных для сокетов SCTP (17 на момент написания этой книги), дают возможность разработчику приложения более точно контролировать его поведение. Параметр level для сокетов SCTP должен принимать значение
8.5. Эхо-клиент UDP: функция main Функция main клиента UDP показана в листинге 8.3.Листинг 8.3. Эхо-клиент UDP//udpcliserv/udpcli01.c 1 #include "unp.h" 2 int 3 main(int argc, char **argv) 4 { 5 int sockfd; 6 struct sockaddr_in servaddr; 7 if (argc != 2) 8 err_quit("usage: udpcli <Ipaddress>"); 9 bzero(&servaddr, sizeof(servaddr));10 servaddr.sin_family = AF_INET;11 servaddr.sin_port =
8.6. Эхо-клиент UDP: функция dg_cli В листинге 8.4 показана функция dg_cli, которая выполняет большую часть работы на стороне клиента.Листинг 8.4. Функция dg_cli: цикл обработки клиента//lib/dg_cli.c 1 #include "unp.h" 2 void 3 dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen) 4 { 5 int n; 6 char sendline[MAXLINE], recvline[MAXLINE + 1]; 7
Глава 10 Пример SCTP-соединения клиент-сервер 10.1. Введение Воспользуемся некоторыми элементарными функциями из глав 4 и 9 для написания полнофункционального приложения SCTP с архитектурой клиент-сервер типа «один-ко-многим». Сервер из нашего примера будет аналогичен
10.2. Потоковый эхо-сервер SCTP типа «один-ко-многим»: функция main Наши клиент и сервер SCTP вызывают функции в последовательности, представленной на рис. 9.2. Код последовательного сервера представлен в листинге 10.1[1].Листинг 10.1. Потоковый эхо-сервер SCTP//sctp/sctpserv01.c 1 #include "unp.h" 2 int 3
16.4. Неблокируемая функция connect: клиент времени и даты В листинге 16.7 показана наша функция connect_nonb, вызывающая неблокируемую функцию connect. Мы заменяем вызов функции connect, имеющийся в листинге 1.1, следующим фрагментом кода:if (connect_nonb(sockfd, (SA*)&servaddr, sizeof(servaddr), 0) < 0)err_sys("connect
23.12. Когда SCTP оказывается предпочтительнее TCP Изначально протокол SCTP разрабатывался для управления сигналами и реализации интернет-телефонии. Однако в процессе разработки область применения этого протокола значительно расширилась. Фактически он превратился в