Пример: передача текстовых строк между клиентом и сервером

Пример: передача текстовых строк между клиентом и сервером

Изменим наш сервер так, чтобы он, по-прежнему принимая текстовую строку от клиента, предполагал, что строка содержит два целых числа, разделенных пробелом, и возвращал сумму этих чисел. Функции 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), "%ld ", arg1 + arg2);

13   else

14    snprintf(line, sizeof(line), "input error ");

15   n = strlen(line);

16   Writen(sockfd, line, n);

17  }

18 }

11-14 Мы вызываем функцию sscanf, чтобы преобразовать два аргумента из текстовых строк в целые числа типа long, а затем функцию snprintf для преобразования результата в текстовую строку.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Вывод на экран текстовых строк

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

Вывод на экран текстовых строк Сформированные в сценарии строки текста можно выводить в стандартный выходной поток (в консольном режиме) или в графическое диалоговое окно несколькими способами:? с помощью метода Echo объекта WScript;? с помощью методов Write и WriteLine объекта


11.10.2 Типичный начальный обмен сообщениями между клиентом и сервером

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

11.10.2 Типичный начальный обмен сообщениями между клиентом и сервером Пример успешного начального взаимодействия между клиентом и сервером:1. Клиент посылает широковещательную рассылку (DHCPDISCOVER) для поиска одного или нескольких серверов.2. Клиенту могут ответить


Пример 10-22. Передача управление в начало внешнего цикла

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Пример 10-22. Передача управление в начало внешнего цикла #!/bin/bash# Команда "continue N" передает управление в начало внешнего цикла, отстоящего от текущего на N уровней.for outer in I II III IV V # внешний циклdo echo; echo -n "Группа $outer: " for inner in 1 2 3 4 5 6 7 8 9 10 # вложенный цикл do if [ "$inner" -eq 7 ] then


Пример 10-27. Простой пример сравнения строк

Из книги Linux программирование в примерах автора Роббинс Арнольд

Пример 10-27. Простой пример сравнения строк #!/bin/bash# match-string.sh: простое сравнение строкmatch_string (){ MATCH=0 NOMATCH=90 PARAMS=2 # Функция требует два входных аргумента. BAD_PARAMS=91 [ $# -eq $PARAMS ] || return $BAD_PARAMS case "$1" in "$2") return $MATCH;; * ) return $NOMATCH;; esac}a=oneb=twoc=threed=twomatch_string $a # неверное число


Пример 17-7. Передача пары файлов во входящий каталог на "Sunsite"

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

Пример 17-7. Передача пары файлов во входящий каталог на "Sunsite" #!/bin/bash# upload.sh# Передача пары файлов (Filename.lsm, Filename.tar.gz)# на Sunsite (ibiblio.org).E_ARGERROR=65if [ -z "$1" ]then echo "Порядок использования: `basename $0` filename" exit $E_ARGERRORfiFilename=`basename $1` # Отсечь имя файла от пути к нему.Server="ibiblio.org"Directory="/incoming/Linux"#


Пример A-5. encryptedpw: Передача файла на ftp-сервер, с использованием пароля

Из книги автора

Пример A-5. encryptedpw: Передача файла на ftp-сервер, с использованием пароля #!/bin/bash# Модификация примера "ex72.sh", добавлено шифрование пароля.# Обратите внимание: этот вариант все еще нельзя считать безопасным,#+ поскольку в сеть пароль уходит в незашифрованном виде.# Используйте


Пример A-8. days-between: Подсчет числа дней между двумя датами

Из книги автора

Пример A-8. days-between: Подсчет числа дней между двумя датами #!/bin/bash# days-between.sh: Подсчет числа дней между двумя датами.# Порядок использования: ./days-between.sh [M]M/[D]D/YYYY [M]M/[D]D/YYYYARGS=2 # Ожидается два аргумента из командной строки.E_PARAM_ERR=65 # Ошибка в числе ожидаемых


ПРИМЕР: СОРТИРОВКА СТРОК

Из книги автора

ПРИМЕР: СОРТИРОВКА СТРОК      Возьмем реальную задачу сортировки строк в алфавитном порядке. Эта задача может возникнуть при подготовке списка фамилий, при создании алфавитного указателя и во многих других ситуациях. В такой программе одним из главных инструментов


Пример: передача двоичных структур между клиентом и сервером

Из книги автора

Пример: передача двоичных структур между клиентом и сервером Теперь мы изменим код клиента и сервера, чтобы передавать через сокет не текстовые строки, а двоичные значения. Мы увидим, что клиент и сервер работают некорректно, когда они запущены на узлах с различным