\subsection{I dati \textit{out-of-band}}
\label{sec:TCP_urgent_data}
+\itindbeg{out-of-band}
Una caratteristica speciale dei socket TCP è quella della presenza dei
cosiddetti dati \textit{out-of-band} ...
+\itindend{out-of-band}
\section{L'uso dell'I/O non bloccante}
\item[\const{SOCK\_STREAM}] Provvede un canale di trasmissione dati
bidirezionale, sequenziale e affidabile. Opera su una connessione con un
altro socket. I dati vengono ricevuti e trasmessi come un flusso continuo di
- byte (da cui il nome \textit{stream}).
+ byte (da cui il nome \textit{stream}) e possono essere letti in blocchi di
+ dimensioni qualunque. Può supportare la trasmissione dei cosiddetti dati
+ \itindex{out-of-band} \textit{out-of-band} (vedi
+ sez.~\ref{sec:TCP_urgent_data}).
\item[\const{SOCK\_DGRAM}] Viene usato per trasmettere pacchetti di dati
(\textit{datagram}) di lunghezza massima prefissata, indirizzati
singolarmente. Non esiste una connessione e la trasmissione è effettuata in
\item[\const{SOCK\_SEQPACKET}] Provvede un canale di trasmissione di dati
bidirezionale, sequenziale e affidabile. Opera su una connessione con un
altro socket. I dati possono vengono trasmessi per pacchetti di dimensione
- massima fissata, ed devono essere letti integralmente da ciascuna
- chiamata a \func{read}.
+ massima fissata, e devono essere letti integralmente da ciascuna chiamata a
+ \func{read}.
\item[\const{SOCK\_RAW}] Provvede l'accesso a basso livello ai protocolli di
rete e alle varie interfacce. I normali programmi di comunicazione non
devono usarlo, è riservato all'uso di sistema.
Infine c'è una sola condizione che fa si che \func{select} ritorni segnalando
che un socket (che sarà riportato nel terzo insieme di file descriptor) ha una
condizione di eccezione pendente, e cioè la ricezione sul socket di dati
-\textsl{fuori banda} (o \textit{out-of-band}), una caratteristica specifica
-dei socket TCP su cui torneremo in sez.~\ref{sec:TCP_urgent_data}.
+\textsl{fuori banda} (o \itindex{out-of-band} \textit{out-of-band}), una
+caratteristica specifica dei socket TCP su cui torneremo in
+sez.~\ref{sec:TCP_urgent_data}.
Si noti come nel caso della lettura \func{select} si applichi anche ad
operazioni che non hanno nulla a che fare con l'I/O di dati come il
\item i dati inviati su un socket vengono considerati traffico normale,
pertanto vengono rilevati alla loro ricezione sull'altro capo da una
selezione effettuata con \const{POLLIN} o \const{POLLRDNORM};
-\item i dati \textit{out-of-band} su un socket TCP vengono considerati
+\item i dati \itindex{out-of-band} \textit{out-of-band} (vedi
+ sez.~\ref{sec:TCP_urgent_data}) su un socket TCP vengono considerati
traffico prioritario e vengono rilevati da una condizione \const{POLLIN},
\const{POLLPRI} o \const{POLLRDBAND}.
\item la chiusura di una connessione (cioè la ricezione di un segmento FIN)