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.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Сервер
Сервер Теперь, когда мы рассмотрели клиента, перейдем к серверу. Клиент использовал функцию ConnectAttach() для создания соединения с сервером, а затем использовал функцию MsgSend() для передачи сообщений.Создание каналаПод этим подразумевается, что сервер должен создать канал —
Web-сервер
Web-сервер Когда мы тестировали нашу первую Web-страницу, то прекрасно обошлись без Web-сервера, открыв ее прямо в Web-обозревателе. Но в дальнейшем, особенно когда мы начнем реализовывать подгрузку содержимого, Web-сервер все-таки нам понадобится. Многие Web-сценарии нормально
5.2. Эхо-сервер TCP: функция main
5.2. Эхо-сервер TCP: функция main Наши клиент и сервер TCP используют функции, показанные на рис. 4.1. Программа параллельного сервера представлена в листинге 5.1[1].Листинг 5.1. Эхо-сервер TCP (улучшенный в листинге 5.9)//tcpcliserv/tcpserv01.с 1 #include "unp.h" 2 int 3 main(int argc, char **argv) 4 { 5 int listenfd, connfd; 6 pid_t
6.11. Эхо-сервер TCP (еще раз)
6.11. Эхо-сервер TCP (еще раз) Теперь мы изменим наш эхо-сервер TCP из раздела 6.8, используя вместо функции select функцию poll. В предыдущей версии сервера, работая с функцией select, мы должны были выделять массив client вместе с набором дескрипторов rset (см. рис. 6.12). С помощью функции poll мы
8.3. Эхо-сервер UDP: функция main
8.3. Эхо-сервер UDP: функция main Теперь мы переделаем нашу простую модель клиент-сервер из главы 5, используя UDP. Диаграмма вызовов функций в программах наших клиента и сервера UDP показана на рис. 8.1. На рис. 8.2 представлены используемые функции. В листинге 8.1[1] показана функция
8.4. Эхо-сервер UDP: функция dg_echo
8.4. Эхо-сервер UDP: функция dg_echo В листинге 8.2 показана функция dg_echo.Листинг 8.2. Функция dg_echo: отражение строк на сокете дейтаграмм//lib/dg_echo.c 1 #include "unp.h" 2 void 3 dg_echo(int sockfd, SA *pcliaddr, socklen_t clilen) 4 { 5 int n; 6 socklen_t len; 7 char mesg[MAXLINE]; 8 for (;;) { 9 len = clilen;10 n = Recvfrom(sockfd, mesg, MAXLINE, 0, pcliaddr, &len);11
10.2. Потоковый эхо-сервер SCTP типа «один-ко-многим»: функция main
10.2. Потоковый эхо-сервер SCTP типа «один-ко-многим»: функция main Наши клиент и сервер SCTP вызывают функции в последовательности, представленной на рис. 9.2. Код последовательного сервера представлен в листинге 10.1[1].Листинг 10.1. Потоковый эхо-сервер SCTP//sctp/sctpserv01.c 1 #include "unp.h" 2 int 3
Пример: функция str_echo, использующая стандартный ввод-вывод
Пример: функция str_echo, использующая стандартный ввод-вывод Сейчас мы модифицируем наш эхо-сервер TCP (см. листинг 5.2) для использования стандартного ввода-вывода вместо функций readline и writen. В листинге 14.6 представлена версия нашей функции str_echo, использующая стандартный
Сервер
Сервер Сервером называют постоянно работающий компьютер, подключенный к Сети. Если вернуться к нашему парку развлечений, то сервер – это один из его аттракционов. Помимо основных функций хранения и передачи информации, сервер может являться входом в Интернет для
Сервер INN
Сервер INN Среди серверов новостей, предназначенных для выполнения в системе Linux, наиболее популярным является InterNetNews, или INN (http://www.isc.org/products/INN). Пакет INN состоит из нескольких программ, работающих совместно. Основная программа, innd, предназначена для обработки новых статей
Web-сервер
Web-сервер Когда мы тестировали нашу первую Web-страницу, то прекрасно обошлись без Web-сервера, открыв ее прямо в Web-обозревателе. Но в дальнейшем, особенно когда мы начнем реализовывать подгрузку содержимого, Web-сервер все-таки нам понадобится. Многие Web-сценарии нормально
FTP-сервер
FTP-сервер В настоящее время мы предпочитаем использовать для конфигурации аппаратов Polycom протокол FTP (File Transfer Protocol - протокол передачи файлов)1. Мы бы рекомендовали выбрать его, а не TFTP и для устройств, которые могут работать с обоими протоколами. В системе CentOS при
16.14. Сервер kHTTPd — веб-сервер уровня ядра
16.14. Сервер kHTTPd — веб-сервер уровня ядра В операционной системе все процессы можно разделить на два типа: процессы уровня ядра и пользовательские процессы. Процесс уровня ядра запускается и работает очень быстро по сравнению с относительно неповоротливым
Сервер
Сервер С помощью данной службы обеспечивается общий доступ к файлам, принтерам и именованным каналам данного компьютера. Иными словами, если данная служба будет отключена, то на компьютере нельзя будет создавать общедоступные ресурсы, а сетевые компьютеры не смогут
26.2. Web-сервер
26.2. Web-сервер 26.2.1. Установка Apache и PHP Запустите менеджер Synaptic. В поле Быстрый поиск введите apache. Щелкните правой кнопкой мыши на пакете apache2 и выберите команду Отметить для установки. Менеджер пакетов сообщит вам, что нужно установить дополнительные пакеты (рис. 26.1). Нажмите