27) Come vengono trattati i dati out-of-band?
I messaggi out-of-band, messaggi urgenti che devono essere recapitati subito, usano un canale logicamente indipendente dal canale normale usato nella connessione.TCP usa un solo canale out-of-band, sul quale recapita messaggi di un solo byte.
Il messaggio out-of-band è in sequenza nello stream consegnato al destinatario indipendentemente dai dati. Esiste un marcatore nello stream per indicare il punto legato alla condizione eccezionale. Il processo che spedisce il messaggio out-of-band usa la send con il flag MSG_OOB (anche bloccante). Il processo che lo riceve usa la recv con il medesimo flag.
Per quanto riguarda come fa il processo ricevente a riconoscere il messaggio, vi sono due metodi di segnalazione:
si definisce un gestore del segnale SIGURG, quindi con una ioctl con SIOCSGRP si consegna il segnale al processo interessato.
se il processo è bloccato su una select, la select esce con la maschera degli eventi eccezionali.
È possibile forzare il flusso out-of-band all’interno del flusso normale usando una setsockopt con l’opzione SO_OOBINLINE. Tuttavia, è necessario non oltrepassare il marcatore. Per riconoscere se il marcatore è stato raggiunto uso
rit=ioctl(s,SIOCATMARK,&flag);
se rit=0 il marcatore non è stato raggiunto
se rit=1 il marcatore è stato raggiunto