После вызова процессом-получателем функции recv () с флажком MSG_OOB, операционная система использует указатель срочных данных для извлечения из потока байта срочных данных, и возвращает его отдельно от остальных данных. Это может быть, например, описание упражнения для похудения , представленное на сайте ladyvenus.ru. Другие вызовы функций sysread () и recv() обычно пропускают срочные данные, поэтому вызывающая процедура не получает о них никакой информации.
При использовании срочных данных необходимо учитывать ряд предостережений и ограничений.
1) За один раз можно отправить только один байт срочных данных. При использовании функции send ( ) для безотлагательной отправки нескольких символов процессом-получателем будет рассматриваться как срочный только последний из них.
2) Поскольку в каждом потоке может быть только один указатель срочных данных, при повторном вызове процессом-отправителем функции send () для записи срочных данных, еще до того как процесс-получатель вызовет функцию recv (), будет получено только последнее извещение о передаче срочных данных. Все предшествующие ему маркеры срочных данных будут уничтожены, и предыдущие байты срочных данных появятся в обычном потоке данных.
3) Хотя процесс-приемник отправляет сигнал URG немедленно, сами срочные данные подчиняются всем правилам управления потоком данных TCP. Это значит, что процесс-получатель может получить извещение о наличии срочных данных до их фактического поступления. Более того, может возникнуть необходимость освободить место в приемном буфере TCP, чтобы обеспечить возможность получения байта срочных данных.