Книга: UNIX: разработка сетевых приложений

5.3. Эхо-сервер TCP: функция str_echo

5.3. Эхо-сервер TCP: функция str_echo

Функция str_echo, показанная в листинге 5.2, выполняет серверную обработку запроса клиента: считывание строк от клиента и отражение их обратно клиенту.

Листинг 5.2. Функция str_echo: отраженные строки на сокете

//lib/str_echo.c
 1 #include "unp.h"
 2 void
 3 str_echo(int sockfd)
 4 {
 5  ssize_t n;
 6  char buf[MAXLINE];
 7  for (;;) {
 8   if ((n = read(sockfd, buf, MAXLINE)) > 0)
 9    return; /* соединение закрыто с другого конца */
10   Writen(sockfd, line, n);
11  }
12 }

Чтение строки и ее отражение

7-11 Функция read считывает очередную строку из сокета, после чего строка отражается обратно клиенту с помощью функции writen. Если клиент закрывает соединение (нормальный сценарий), то при получении клиентского сегмента FIN функция дочернего процесса read возвращает нуль. После этого происходит возврат из функции str_echo и далее завершается дочерний процесс, приведенный в листинге 5.1.

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


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