Управление соединением по 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, хотя клиент при этом и не завершает свою работу.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Управление потоком
Управление потоком Управление потоком осуществляется прикладным процессом с помощью команд системного вызова ioctl(2):#include <sys/types.h>#include <stropts.h>#include <sys/conf.h>int ioctl(int fildes, int command, ... /* arg */);Хотя часть команд обрабатывается исключительно головным модулем потока, другие
8.1.4 Управление приоритетами
8.1.4 Управление приоритетами Процессы могут управлять своими приоритетами с помощью системной функции nice:nice(value);где value — значение, в процессе пересчета прибавляемое к приоритету процесса:приоритет = (ИЦП/константа) + (базовый приоритет) + (значение nice)Системная функция nice
4.2. Управление группами
4.2. Управление группами Начнем изучение вопроса с создания групп. Что это такое? Допустим, что в вашей сети 1000 пользователей, 500 из которых должны иметь доступ к файлам бухгалтерской отчетности. Как поступить? Можно каждому из 500 пользователей назначить права на нужный файл
6.3. Управление пользователями
6.3. Управление пользователями Для начала разберемся с именами пользователей. Для доступа к серверу Samba используются сведения из системного файла /etc/passwd. Но вы можете завести отдельные записи Samba-сервера, которые будут соответствовать реальным именам, но их можно будет
Управление доменом
Управление доменом Несмотря на то что вы создали файл /etc/named.conf, указали в нем глобальные опции и определили зоны, оказывается, что настройка ведущего сервера DNS не закончена и запускать его еще рано. Если в файле /etc/named.conf указана зона типа master, необходим также
Управление контактами
Управление контактами В программе Skype можно управлять контактными данными абонентов, а именно отправлять список абонентов другим людям и импортировать данные абонентов из адресной книги.Отправка списка абонентовОбмениваться контактными данными очень удобно в
Управление материалами.
Управление материалами. Все в этом мире имеет цвет. Цвет определяет восприятие нами окружающего мира. Яблоко – красное, небо – синее и так далее. Для обозначения свойств поверхности объектов Direct3D использует термин "материал". Свойства материала описываются структурой
Управление транзакциями
Управление транзакциями Необходимо помнить, что любое действие с базой данных происходит в рамках той или иной транзакции. Работа с InterBase основана на явном управлении транзакциями, а поскольку библиотека IBX - это обертка вокруг соответствующих функций InterBase API, то
7.1. Управление и планирование
7.1. Управление и планирование Если мы при проектировании опираемся на метод итеративного развития, то важнее всего иметь сильное руководство, способное управлять ходом проекта и направлять его. Слишком много проектов сбились с пути из-за неспособности сосредоточиться
Управление просмотром
Управление просмотром ArchiCAD предоставляет пользователю мощные средства управления отображением проекта на экране. Сейчас рассмотрим только самые основные инструменты управления видом проекта, используемые при работе практически постоянно. Эти инструменты
Управление слоями
Управление слоями Элементы управления слоями и атрибуты слоев рассмотрим на примере стандартного списка слоев ArchiCAD.Окно управления слоями Layer Settings (Настройки слоя) (рис. 7.1) можно вызвать несколькими способами:? командой Document ? Layers ? Layer Settings (Документ ? Слои ? Настройки
Управление проектами
Управление проектами В завершение главы стоит рассказать о проектах, то есть о том, с чем, собственно, предстоит работать в программе Pinnacle
Управление воспроизведением
Управление воспроизведением Под областью предварительного просмотра в Проигрывателе расположены элементы управления воспроизведением. Внешний вид этой области в окне Проигрывателя зависит от конкретного режима работы программы Studio, например при захвате видео
1.1.3 Управление окнами
1.1.3 Управление окнами Окна могут располагаться на экране произвольным образом, перекрывая друг друга. X имеет набор средств, пользуясь которыми программа-клиент может изменять размеры окон и их положение на экране. Особенностью системы является то, что она не имеет
ГЛАВА 04 УПРАВЛЕНИЕ
ГЛАВА 04 УПРАВЛЕНИЕ Однажды сороконожку спросили, с какой ноги она начинает движение. С тех пор она не может сдвинуться с места, мучительно размышляя над тем, с какой ноги начинать. Это старая шутка, но попробуйте задуматься: как вы управляете своей компанией? Не знаю,