Пример: единственность отметки внеполосных данных в TCP

Пример: единственность отметки внеполосных данных в TCP

Нашим очередным примером мы иллюстрируем тот факт, что для данного соединения TCP существует всего одна отметка внеполосных данных, и если новые внеполосные данные прибудут прежде, чем принимающий процесс начнет считывать пришедшие ранее внеполосные данные, то предыдущая отметка будет утеряна.

В листинге 24.10 показана посылающая программа, аналогичная программе, приведенной в листинге 24.6. Отличие заключается в том, что сейчас мы добавили еще одну функцию send для отправки внеполосных данных и еще одну функцию write для записи обычных данных.

Листинг 24.10. Отправка двух байтов внеполосных данных друг за другом

//oob/tcpsend06.c

 1 #include "unp.h"

 2 int

 3 main(int argc, char **argv)

 4 {

 5  int sockfd;

 6  if (argc != 3)

 7   err_quit("usage: tcpsend04 <host> <port#>");

 8  sockfd = Tcp_connect(argv[1], argv[2]);

 9  Write(sockfd, "123", 3);

10  printf("wrote 3 bytes of normal data ");

11  Send(sockfd, "4", 1, MSG_OOB);

12  printf("wrote 1 byte of OOB data ");

13  Write(sockfd, "5", 1);

14  printf("wrote 1 byte of normal data ");

15  Send(sockfd,. "6", 1, MSG_OOB);

16  printf("wrote 1 byte of OOB data ");

17  Write(sockfd, "7", 1);

18  printf("wrote 1 byte of normal data ");

19  exit(0);

20 }

В данном случае отправка данных происходит без пауз, что позволяет быстро переслать данные собеседнику.

Принимающая программа идентична программе, приведенной в листинге 24.7, где вызывается функция sleep, которая после установления соединения переводит получателя в спящее состояние на 5 с, чтобы позволить данным прибыть на принимающий TCP. Ниже приводится результат выполнения этой программы:

freebsd4 % tcprecv06 5555

read 5 bytes: 12345

at OOB mark

read 2 bytes: 67

received EOF

Прибытие второго байта внеполосных данных (6) изменяет отметку, которая ассоциировалась с первым прибывшим байтом внеполосных данных (4). Как мы сказали, для конкретного соединения TCP допускается только одна отметка внеполосных данных.

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

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

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

Единственность и идентификация

Из книги Сущность технологии СОМ. Библиотека программиста автора Бокс Дональд

Единственность и идентификация Предыдущий раздел был посвящен запросам QueryInterface, которые представляют собой ответы типа «да/нет» вызывающим объектам. QueryInterface действительно возвращает S_OK (да) или E_NOINTERFACE (нет). Впрочем, когда QueryInterface возвращает S_OK, то он также возвращает


Отметки возвышений на разрезах/фасадах

Из книги ArchiCAD 11 автора Днепров Александр Г

Отметки возвышений на разрезах/фасадах Инструмент построения отметок возвышений (уровней) на разрезах/фасадах (кнопка ) находится в составе линейных размеров. Мы рассмотрим его в отдельном подразделе по следующим причинам.• Во-первых, он предназначен для обозначения


Отметки возвышений на плане этажа

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

Отметки возвышений на плане этажа Для отображения отметок возвышений на планах этажей в ArchiCAD имеется отдельный инструмент, вызываемый щелчком на кнопке Level Dimension (Отметки уровня) в разделе Document (Документ) палитры ToolBox (Палитра инструментов).При его активизации на


6.1.6. Учебный пример: база данных Terminfo

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

6.1.6. Учебный пример: база данных Terminfo База данных terminfo представляет собой набор описаний видеотерминалов. В каждой записи описываются евсаре-последовательности, которые осуществляют различные операции на экране терминала, такие как вставка или удаление строк, удаление


6.1.6. Учебный пример: база данных Terminfo

Из книги Системное программирование в среде Windows автора Харт Джонсон М

6.1.6. Учебный пример: база данных Terminfo База данных terminfo представляет собой набор описаний видеотерминалов. В каждой записи описываются escape-последовательности, которые осуществляют различные операции на экране терминала, такие как вставка или удаление строк, удаление


6.1.7. Учебный пример: файлы данных Freeciv

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

6.1.7. Учебный пример: файлы данных Freeciv Игра Freeciv — стратегия с открытым исходным кодом, прообразом которой послужила классическая игра Civilization II Сида Мейера (Sid Meier). Игра состоит в том, что каждый участник, имея в своем распоряжении группу кочевников каменного века, строит


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

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

Пример: использование указательных типов данных Аргументом потока, передаваемым функции потока при вызове CreateThread и _beginthreadex (см. главу 7), является указатель типа PVOID. Иногда программист может захотеть передать функции потока только целочисленное значение, указывающее,


Пример базы данных

Из книги Антимозг [Цифровые технологии и мозг] автора Шпитцер Манфред

Пример базы данных Везде в этой книге языковые примеры используют пример базы данных, которая находится в каталоге Examples в папке, где установлен Firebird. В дистрибутиве Firebird 1.0.x она называлась employee.gdb. В Firebird 1.5 это employee.fdb.Краткое описание примера базы данных содержится в


Приложение 6. Пример базы данных

Из книги Новый ум короля [О компьютерах, мышлении и законах физики] автора Пенроуз Роджер

Приложение 6. Пример базы данных Пример базы данных инсталлируется вместе в Firebird в каталог /examples в корневом каталоге Firebird. В Firebird 1.0 это база данных диалекта 1, ее имя employee.gdb. В версии 1.5 она имеет диалект 3 и имя employee.fdb. Структурно это та же самая база данных.Эта база данных


Пример A-22. Объектно ориентированная база данных

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Пример A-22. Объектно ориентированная база данных #!/bin/bash# obj-oriented.sh: Объектно ориентрованный подход к программированию в сценариях.# Автор: Stephane Chazelas.person.new() # Очень похоже на объявление класса в C++.{ local obj_name=$1 name=$2 firstname=$3 birthdate=$4 eval "$obj_name.set_name() { eval "$obj_name.get_name() {


Плохие отметки в подарок

Из книги Социальные сети. ВКонтакте, Facebook и другие… автора Леонтьев Виталий Петрович

Плохие отметки в подарок Чтобы разобраться, являются ли компьютерные игры причиной школьных неудач учащихся мужского пола или это отсутствие успехов в учебе заставляет школьников уходить с головой в игры, необходимы так называемые лонгитюдные исследования[21]. Несмотря


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

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

Пример: особенности отметки внеполосных данных Далее мы приводим простой пример, иллюстрирующий следующие две особенности отметки внеполосных данных:1. Отметка внеполосных данных всегда указывает на один байт дальше конечного байта обычных данных. Это означает, что,


Пример: дополнительные свойства внеполосных данных

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

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


24.4. Резюме по теме внеполосных данных TCP

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

24.4. Резюме по теме внеполосных данных TCP Все приведенные до сих пор примеры, иллюстрирующие использование внеполосных данных, были весьма тривиальны. К сожалению, когда мы начинаем учитывать возможные проблемы, связанные с согласованием во времени при пересылке


Кнопка и отметки «Мне нравится»

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

Кнопка и отметки «Мне нравится» Отдельное и довольно выгодное место в анкете занимает список поставленных вами отметок «Мне нравится» – уже упомянутых выше «лайков». На странице профиля этот список помещается прямо в «шапке», рядом с фотоальбомом. Если же щелкнуть по