Пример: единственность отметки внеполосных данных в 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 допускается только одна отметка внеполосных данных.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Пример: использование указательных типов данных
Пример: использование указательных типов данных Аргументом потока, передаваемым функции потока при вызове CreateThread и _beginthreadex (см. главу 7), является указатель типа PVOID. Иногда программист может захотеть передать функции потока только целочисленное значение, указывающее,
Пример: особенности отметки внеполосных данных
Пример: особенности отметки внеполосных данных Далее мы приводим простой пример, иллюстрирующий следующие две особенности отметки внеполосных данных:1. Отметка внеполосных данных всегда указывает на один байт дальше конечного байта обычных данных. Это означает, что,
Пример: дополнительные свойства внеполосных данных
Пример: дополнительные свойства внеполосных данных Теперь мы покажем другой столь же простой пример, иллюстрирующий две дополнительные особенности внеполосных данных, о которых мы уже упоминали ранее.1. TCP посылает уведомление об отправке внеполосных данных (их срочный
24.4. Резюме по теме внеполосных данных TCP
24.4. Резюме по теме внеполосных данных TCP Все приведенные до сих пор примеры, иллюстрирующие использование внеполосных данных, были весьма тривиальны. К сожалению, когда мы начинаем учитывать возможные проблемы, связанные с согласованием во времени при пересылке
Кнопка и отметки «Мне нравится»
Кнопка и отметки «Мне нравится» Отдельное и довольно выгодное место в анкете занимает список поставленных вами отметок «Мне нравится» – уже упомянутых выше «лайков». На странице профиля этот список помещается прямо в «шапке», рядом с фотоальбомом. Если же щелкнуть по
Единственность и идентификация
Единственность и идентификация Предыдущий раздел был посвящен запросам QueryInterface, которые представляют собой ответы типа «да/нет» вызывающим объектам. QueryInterface действительно возвращает S_OK (да) или E_NOINTERFACE (нет). Впрочем, когда QueryInterface возвращает S_OK, то он также возвращает
6.1.6. Учебный пример: база данных Terminfo
6.1.6. Учебный пример: база данных Terminfo База данных terminfo представляет собой набор описаний видеотерминалов. В каждой записи описываются евсаре-последовательности, которые осуществляют различные операции на экране терминала, такие как вставка или удаление строк, удаление
6.1.6. Учебный пример: база данных Terminfo
6.1.6. Учебный пример: база данных Terminfo База данных terminfo представляет собой набор описаний видеотерминалов. В каждой записи описываются escape-последовательности, которые осуществляют различные операции на экране терминала, такие как вставка или удаление строк, удаление
6.1.7. Учебный пример: файлы данных Freeciv
6.1.7. Учебный пример: файлы данных Freeciv Игра Freeciv — стратегия с открытым исходным кодом, прообразом которой послужила классическая игра Civilization II Сида Мейера (Sid Meier). Игра состоит в том, что каждый участник, имея в своем распоряжении группу кочевников каменного века, строит
Пример базы данных
Пример базы данных Везде в этой книге языковые примеры используют пример базы данных, которая находится в каталоге 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. Объектно ориентированная база данных
Пример 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() {
Отметки возвышений на разрезах/фасадах
Отметки возвышений на разрезах/фасадах Инструмент построения отметок возвышений (уровней) на разрезах/фасадах (кнопка ) находится в составе линейных размеров. Мы рассмотрим его в отдельном подразделе по следующим причинам.• Во-первых, он предназначен для обозначения
Отметки возвышений на плане этажа
Отметки возвышений на плане этажа Для отображения отметок возвышений на планах этажей в ArchiCAD имеется отдельный инструмент, вызываемый щелчком на кнопке Level Dimension (Отметки уровня) в разделе Document (Документ) палитры ToolBox (Палитра инструментов).При его активизации на
Плохие отметки в подарок
Плохие отметки в подарок Чтобы разобраться, являются ли компьютерные игры причиной школьных неудач учащихся мужского пола или это отсутствие успехов в учебе заставляет школьников уходить с головой в игры, необходимы так называемые лонгитюдные исследования[21]. Несмотря
Стивенс Уильям Ричард
Просмотр ограничен
Смотрите доступные для ознакомления главы 👉