Книга: 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 возвращает пустой указатель только при достижении конца файла.

Оглавление книги


Генерация: 1.327. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз