Книга: UNIX: разработка сетевых приложений
5.5. Эхо-клиент TCP: функция str_cli
Разделы на этой странице:
5.5. Эхо-клиент TCP: функция str_cli
Эта функция, показанная в листинге 5.4, обеспечивает отправку запроса клиента и прием ответа сервера в цикле. Функция считывает строку текста из стандартного потока ввода, отправляет ее серверу и считывает отраженный ответ сервера, после чего помещает отраженную строку в стандартный поток вывода.
Листинг 5.4. Функция str_cli: цикл формирования запроса клиента
//lib/str_cli.c
1 #include "unp.h"
2 void
3 str_cli(FILE *fp, int sockfd)
4 {
5 char sendline[MAXLINE], recvline[MAXLINE];
6 while (Fgets(sendline, MAXLINE, fp) != NULL) {
7 Writen(sockfd,. sendline, strlen(sendline));
8 if (Readline(sockfd, recvline, MAXLINE) == 0)
9 err_quit("str_cli: server terminated prematurely");
10 Fputs(recvline, stdout);
11 }
12 }
Считывание строки, отправка серверу
6-7
Функция fgets
считывает строку текста, а функция writen
отправляет эту строку серверу.
Считывание отраженной сервером строки, запись в стандартный поток вывода
8-10
Функция readline
принимает отраженную сервером строку, а функция fputs
записывает ее в стандартный поток вывода.
Возврат в функцию main
11-12
Цикл завершается, когда функция fgets
возвращает пустой указатель, что означает достижение конца файла или обнаружение ошибки. Наша функция-обертка Fgets
проверяет наличие ошибки, и если ошибка действительно произошла, прерывает выполнение программы. Таким образом, функция Fgets
возвращает пустой указатель только при достижении конца файла.
- 5.1. Введение
- 5.2. Эхо-сервер TCP: функция main
- 5.3. Эхо-сервер TCP: функция str_echo
- 5.4. Эхо-клиент TCP: функция main
- 5.5. Эхо-клиент TCP: функция str_cli
- 5.6. Нормальный запуск
- 5.7. Нормальное завершение
- 5.8. Обработка сигналов POSIX
- 5.9. Обработка сигнала SIGCHLD
- 5.10. Функции wait и waitpid
- 5.11. Прерывание соединения перед завершением функции accept
- 5.12. Завершение процесса сервера
- 5.13. Сигнал SIGPIPE
- 5.14. Сбой на узле сервера
- 5.15. Сбой и перезагрузка на узле сервера
- 5.16. Выключение узла сервера
- 5.17. Итоговый пример TCP
- 5.18. Формат данных
- 5.19. Резюме
- Упражнения
- Глава 5 Пример TCP-соединения клиент-сервер
- Совместимость клиентов и серверов различных версий
- Клиенты 3-го диалекта
- 2.1.3. Функция getopt_long()
- Класс StreamReader
- Аватар идеального клиента
- Группировка по встроенным функциям и UDF
- Определение версии клиента
- Снятие ответственности с клиента
- SERVER CLIENT MAPPING
- 19.1.1. Функция jQuery()
- Приложение 21 Образец должностной инструкции начальника отдела по работе с сетевыми клиентами