Последняя проверка проводилась для проверки того, можно ли прервать генерацию пародии. Мы ввели команду generate 20000 для выработки очень длинной пародии объемом 20000 слов, но на этот раз нажмем клавишу прерывания, как только текст начал появляться на экране. Как и ожидалось, передача была прервана, и обработчик сигнала URG клиентского сценария вывел ряд отладочных сообщений по мере уничтожения данных, вплоть до байта срочных данных сервера.
Срочные данные TCP позволяют “вне очереди” передать из одного процесса и другой, через поток обычных данных TCP, информацию о том, что произошло некоторое важное событие. Хотя срочный сигнал передается “вне очереди”, а это значит, что он доставляется на удаленный хост в приоритетном режиме, сами срочные данные в действительности не передаются таким образом, а подчиняются тем же правилам определения последовательности передачи и управления потоком данных, что и обычные данные TCP. Это следует учитывать и в случае если хосту требуется оптимизация сайтов . Для внеочередного чтения срочных данных может понадобиться читать (и, возможно, отбрасывать) переданные ранее обычные данные до тех пор, пока не станут доступными срочные. Поэтому проще всего можно организовать работу со срочными данными, если имеет значение само существование этих данных, а не их фактическое содержание.
Кроме того, можно не только прочитать байт срочных данных, но и определить его местонахождение в потоке данных с помощью функции sockatmark (), которая позволяет отметить участок потока данных TCP как предназначенный для специальной обработки. В примере сервера для генераций пародийных текстов срочные данные применялись для обозначения участка потока данных, предназначенного для уничтожения.
В связи с указанными ограничениями режима передачи срочных данных TCP может потребоваться рассмотреть возможность использования варианта с двумя от дельными сокетами: для обычной связи и первоочередных управляющих данных. Такая организация взаимодействия процессов позволяет передавать и принимать многобайтовые первоочередные сообщения, не прибегая к использованию функции sockatmark () и не углубляясь в иные детали. Однако при этом возрастает сложность программного обеспечения, поскольку число управляемых сокетов удваивается.