Пример: передача текстовых строк между клиентом и сервером
Пример: передача текстовых строк между клиентом и сервером
Изменим наш сервер так, чтобы он, по-прежнему принимая текстовую строку от клиента, предполагал, что строка содержит два целых числа, разделенных пробелом, и возвращал сумму этих чисел. Функции 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 для преобразования результата в текстовую строку.
Эти клиент и сервер работают корректно вне зависимости от порядка байтов на их узлах.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Вывод на экран текстовых строк
Вывод на экран текстовых строк Сформированные в сценарии строки текста можно выводить в стандартный выходной поток (в консольном режиме) или в графическое диалоговое окно несколькими способами:? с помощью метода Echo объекта WScript;? с помощью методов Write и WriteLine объекта
Пример: передача двоичных структур между клиентом и сервером
Пример: передача двоичных структур между клиентом и сервером Теперь мы изменим код клиента и сервера, чтобы передавать через сокет не текстовые строки, а двоичные значения. Мы увидим, что клиент и сервер работают некорректно, когда они запущены на узлах с различным
11.10.2 Типичный начальный обмен сообщениями между клиентом и сервером
11.10.2 Типичный начальный обмен сообщениями между клиентом и сервером Пример успешного начального взаимодействия между клиентом и сервером:1. Клиент посылает широковещательную рассылку (DHCPDISCOVER) для поиска одного или нескольких серверов.2. Клиенту могут ответить
ПРИМЕР: СОРТИРОВКА СТРОК
ПРИМЕР: СОРТИРОВКА СТРОК Возьмем реальную задачу сортировки строк в алфавитном порядке. Эта задача может возникнуть при подготовке списка фамилий, при создании алфавитного указателя и во многих других ситуациях. В такой программе одним из главных инструментов
1.20. Отображение длинных текстовых строк с помощью UITextView
1.20. Отображение длинных текстовых строк с помощью UITextView Постановка задачи Требуется отображать в пользовательском интерфейсе несколько строк текста с возможностью
Пример 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. Простой пример сравнения строк
Пример 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"
Пример 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 # Ошибка в числе ожидаемых