Книга: 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-14
 Мы вызываем функцию sscanf, чтобы преобразовать два аргумента из текстовых строк в целые числа типа long, а затем функцию snprintf для преобразования результата в текстовую строку.

Эти клиент и сервер работают корректно вне зависимости от порядка байтов на их узлах.

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


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