Управление соединением по TCP

Управление соединением по TCP

Если мы будем наблюдать с помощью tcpdump за работой клиента и сервера из предыдущего примера, связывающихся по протоколу TCP, мы увидим, что сначала происходит установка соединения (трехэтапное рукопожатие TCP), затем отправляется запрос клиента и сервер отсылает уведомление о приеме этого запроса. Через 25 секунд после этого клиент отсылает серверу FIN, что вызвано завершением работы клиента, после чего следуют оставшиеся три этапа завершения соединения по TCP. В разделе 2.5 [24] эти этапы описаны подробно.

Мы хотим показать, что Sun RPC использует соединение по TCP следующим образом: новое соединение по TCP устанавливается при вызове clnt_create и оно используется для всех вызовов процедур, связанных с указанной программой и версией. Соединение по TCP завершается явно вызовом clnt_destroy или неявно по завершении процесса клиента:

#include <rpc/rpc.h>

void clnt_destroy(CLIENT *cl);

Начнем с клиента из листинга 16.2 и изменим его, добавив второй вызов процедуры сервера, вызовы clnt_destroy и pause. В листинге 16.10 приведен текст новой программы-клиента.

Листинг 16.10. Клиент для изучения свойств соединения по TCP

//sunrpc/square9/client.c

1  #include "unpipc.h" /* наш заголовочный файл*/

2  #include "square.h" /* создается rpcgen */

3  int

4  main(int argc, char **argv)

5  {

6   CLIENT, *cl;

7   square_in in;

8   square_out *outp;

9   if (argc != 3)

10   err_quit("usage: client <hostname> <integer-value>");

11  cl = Clnt_create(argv[1], SQUARE_PROG, SQUARE_VERS, "tcp");

12  in.arg1 = atol(argv[2]);

13  if ((outp = squareproc_1(&in, cl)) == NULL)

14   err_quit("%s", clnt_sperror(c1, argv[1]));

15  printf("result: %ld ", outp->res1);

16  in.arg1 *= 2;

17  if ((outp = squareproc_1(&in, cl)) == NULL)

18   err_quit("%s", clnt_sperror(cl, argv[1]));

19  printf("result: %ld ", outp->res1);

20  clnt_destroy(cl);

21  pause();

22  exit(0);

23 }

После запуска получим ожидаемый результат:

solaris % client kalae 5

result: 25

result: 100

программа в состоянии ожидания, пока мы не завершим ее вручную

Однако проверить наши предыдущие утверждения можно лишь с помощью результатов работы программы tcpdump. Она показывает, что создается одно соединение по TCP (вызовом clnt_create) и оно используется для обоих запросов клиента. Соединение завершается вызовом clnt_destroy, хотя клиент при этом и не завершает свою работу.

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

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

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

8.1.4 Управление приоритетами

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

8.1.4 Управление приоритетами Процессы могут управлять своими приоритетами с помощью системной функции nice:nice(value);где value — значение, в процессе пересчета прибавляемое к приоритету процесса:приоритет = (ИЦП/константа) + (базовый приоритет) + (значение nice)Системная функция nice


1.1.3 Управление окнами

Из книги Программирование в X Window средствами Free Pascal автора Полищук А П

1.1.3 Управление окнами Окна могут располагаться на экране произвольным образом, перекрывая друг друга. X имеет набор средств, пользуясь которыми программа-клиент может изменять размеры окон и их положение на экране. Особенностью системы является то, что она не имеет


Управление материалами.

Из книги Введение в Direct3D8 автора Александров Алексей Иванович

Управление материалами. Все в этом мире имеет цвет. Цвет определяет восприятие нами окружающего мира. Яблоко – красное, небо – синее и так далее. Для обозначения свойств поверхности объектов Direct3D использует термин "материал". Свойства материала описываются структурой


Управление проектами

Из книги Pinnacle Studio 11 автора Чиртик Александр Анатольевич

Управление проектами В завершение главы стоит рассказать о проектах, то есть о том, с чем, собственно, предстоит работать в программе Pinnacle


Управление воспроизведением

Из книги ArchiCAD. Начали! автора Орлов Андрей Александрович

Управление воспроизведением Под областью предварительного просмотра в Проигрывателе расположены элементы управления воспроизведением. Внешний вид этой области в окне Проигрывателя зависит от конкретного режима работы программы Studio, например при захвате видео


Управление просмотром

Из книги Объектно-ориентированный анализ и проектирование с примерами приложений на С++ автора Буч Гради

Управление просмотром ArchiCAD предоставляет пользователю мощные средства управления отображением проекта на экране. Сейчас рассмотрим только самые основные инструменты управления видом проекта, используемые при работе практически постоянно. Эти инструменты


Управление слоями

Из книги SAP Business One. Строим эффективный бизнес автора Елашкин Михаил

Управление слоями Элементы управления слоями и атрибуты слоев рассмотрим на примере стандартного списка слоев ArchiCAD.Окно управления слоями Layer Settings (Настройки слоя) (рис. 7.1) можно вызвать несколькими способами:? командой Document ? Layers ? Layer Settings (Документ ? Слои ? Настройки


7.1. Управление и планирование

Из книги Сетевые средства Linux автора Смит Родерик В.

7.1. Управление и планирование Если мы при проектировании опираемся на метод итеративного развития, то важнее всего иметь сильное руководство, способное управлять ходом проекта и направлять его. Слишком много проектов сбились с пути из-за неспособности сосредоточиться


ГЛАВА 04 УПРАВЛЕНИЕ

Из книги Самоучитель Skype. Бесплатная связь через Интернет автора Яковлева Е. С.

ГЛАВА 04 УПРАВЛЕНИЕ Однажды сороконожку спросили, с какой ноги она начинает движение. С тех пор она не может сдвинуться с места, мучительно размышляя над тем, с какой ноги начинать. Это старая шутка, но попробуйте задуматься: как вы управляете своей компанией? Не знаю,


Управление доменом

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

Управление доменом Несмотря на то что вы создали файл /etc/named.conf, указали в нем глобальные опции и определили зоны, оказывается, что настройка ведущего сервера DNS не закончена и запускать его еще рано. Если в файле /etc/named.conf указана зона типа master, необходим также


Управление контактами

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

Управление контактами В программе Skype можно управлять контактными данными абонентов, а именно отправлять список абонентов другим людям и импортировать данные абонентов из адресной книги.Отправка списка абонентовОбмениваться контактными данными очень удобно в


4.2. Управление группами

Из книги Операционная система UNIX автора Робачевский Андрей М.

4.2. Управление группами Начнем изучение вопроса с создания групп. Что это такое? Допустим, что в вашей сети 1000 пользователей, 500 из которых должны иметь доступ к файлам бухгалтерской отчетности. Как поступить? Можно каждому из 500 пользователей назначить права на нужный файл


6.3. Управление пользователями

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

6.3. Управление пользователями Для начала разберемся с именами пользователей. Для доступа к серверу Samba используются сведения из системного файла /etc/passwd. Но вы можете завести отдельные записи Samba-сервера, которые будут соответствовать реальным именам, но их можно будет


Управление транзакциями

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

Управление транзакциями Необходимо помнить, что любое действие с базой данных происходит в рамках той или иной транзакции. Работа с InterBase основана на явном управлении транзакциями, а поскольку библиотека IBX - это обертка вокруг соответствующих функций InterBase API, то


Управление потоком

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

Управление потоком Управление потоком осуществляется прикладным процессом с помощью команд системного вызова ioctl(2):#include <sys/types.h>#include <stropts.h>#include <sys/conf.h>int ioctl(int fildes, int command, ... /* arg */);Хотя часть команд обрабатывается исключительно головным модулем потока, другие