Книга: UNIX: разработка сетевых приложений
Пример: передача текстовых строк между клиентом и сервером
Пример: передача текстовых строк между клиентом и сервером
Изменим наш сервер так, чтобы он, по-прежнему принимая текстовую строку от клиента, предполагал, что строка содержит два целых числа, разделенных пробелом, и возвращал сумму этих чисел. Функции main
наших клиента и сервера остаются прежними, как и функция str_cli
. Меняется только функция str_echo
, что мы показываем в листинге 5.11.
Листинг 5.11. Функция str_echo, суммирующая два числа
//tcpcliserv/str_echo08.c
Мы вызываем функцию
1 #include "unp.h"
2 void
3 str_echo(int sockfd)
4 {
5 long arg1, arg2;
6 ssize_t n;
7 char line[MAXLINE];
8 for (;;) {
9 if ((n = Readline(sockfd, line, MAXLINE)) == 0)
10 return; /* соединение закрывается удаленным концом */
11 if (sscanf(line, "%ld%ld", &arg1, &arg2) == 2)
12 snprintf(line, sizeof(line), "%ldn", arg1 + arg2);
13 else
14 snprintf(line, sizeof(line), "input errorn");
15 n = strlen(line);
16 Writen(sockfd, line, n);
17 }
18 }
11-14sscanf
, чтобы преобразовать два аргумента из текстовых строк в целые числа типа long
, а затем функцию snprintf
для преобразования результата в текстовую строку.
Эти клиент и сервер работают корректно вне зависимости от порядка байтов на их узлах.
- Пример установочного скрипта
- Инструмент командной строки gbak
- Пример из практики
- Миграция между различными версиями InterBase
- 3.4. Отношения между классами
- Инструмент командной строки gfix
- Передача прав
- Мост между физической и логической структурой базы данных
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Как выделить строку, столбец и ячейки
- Удобная операция объединения строк
- Работа со строками