Passaggio a UTF-8 dei sorgenti
[gapil.git] / sockadv.tex
index 6ec7824ad816c64d9fe986cc1256f055859b0615..81ce5914f6911491e1b65549c9f7ab0e8bf1e13f 100644 (file)
@@ -1,6 +1,6 @@
 %% sockadv.tex
 %%
 %% sockadv.tex
 %%
-%% Copyright (C) 2004-2007 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2004-2011 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -13,7 +13,7 @@
 \label{cha:advanced_socket}
 
 
 \label{cha:advanced_socket}
 
 
-Esamineremo in questo capitolo le funzionalità più evolute della gestione dei
+Esamineremo in questo capitolo le funzionalità più evolute della gestione dei
 socket, le funzioni avanzate, la gestione dei dati urgenti e
 \textit{out-of-band} e dei messaggi ancillari, come l'uso come l'uso del I/O
 multiplexing (vedi sez.~\ref{sec:file_multiplexing}) con i socket.
 socket, le funzioni avanzate, la gestione dei dati urgenti e
 \textit{out-of-band} e dei messaggi ancillari, come l'uso come l'uso del I/O
 multiplexing (vedi sez.~\ref{sec:file_multiplexing}) con i socket.
@@ -22,8 +22,8 @@ multiplexing (vedi sez.~\ref{sec:file_multiplexing}) con i socket.
 \section{Le funzioni di I/O avanzate}
 \label{sec:sock_advanced_IO}
 
 \section{Le funzioni di I/O avanzate}
 \label{sec:sock_advanced_IO}
 
-Tratteremo in questa sezione le funzioni di I/O più avanzate che permettono di
-controllare le funzionalità specifiche della comunicazione dei dati che sono
+Tratteremo in questa sezione le funzioni di I/O più avanzate che permettono di
+controllare le funzionalità specifiche della comunicazione dei dati che sono
 disponibili con i vari tipi di socket.
 
 
 disponibili con i vari tipi di socket.
 
 
@@ -33,15 +33,17 @@ disponibili con i vari tipi di socket.
 Finora abbiamo trattato delle funzioni che permettono di inviare dati sul
 socket in forma semplificata. Se infatti si devono semplicemente ...
 
 Finora abbiamo trattato delle funzioni che permettono di inviare dati sul
 socket in forma semplificata. Se infatti si devono semplicemente ...
 
+% TODO trattare anche recvmmsg, introdotta con il kernel 2.3.33, vedi
+% http://kernelnewbies.org/Linux_2_6_33 
 
 
 \subsection{I messaggi ancillari}
 \label{sec:net_ancillary_data}
 
 
 
 \subsection{I messaggi ancillari}
 \label{sec:net_ancillary_data}
 
-Quanto è stata attivata l'opzione \const{IP\_RECVERR} il kernel attiva per il
+Quanto è stata attivata l'opzione \const{IP\_RECVERR} il kernel attiva per il
 socket una speciale coda su cui vengono inviati tutti gli errori riscontrati.
 Questi possono essere riletti usando il flag \const{MSG\_ERRQUEUE}, nel qual
 socket una speciale coda su cui vengono inviati tutti gli errori riscontrati.
 Questi possono essere riletti usando il flag \const{MSG\_ERRQUEUE}, nel qual
-caso sarà passato come messaggio ancillare una struttura di tipo
+caso sarà passato come messaggio ancillare una struttura di tipo
 \struct{sock\_extended\_err} illustrata in
 fig.~\ref{fig:sock_extended_err_struct}.
 
 \struct{sock\_extended\_err} illustrata in
 fig.~\ref{fig:sock_extended_err_struct}.
 
@@ -65,38 +67,38 @@ fig.~\ref{fig:sock_extended_err_struct}.
 
 \itindbeg{out-of-band} 
 
 
 \itindbeg{out-of-band} 
 
-Una caratteristica particolare dei socket TCP è quella che consente di inviare
+Una caratteristica particolare dei socket TCP è quella che consente di inviare
 all'altro capo della comunicazione una sorta di messaggio privilegiato, che si
 richiede che sia trattato il prima possibile. Si fa riferimento a questa
 all'altro capo della comunicazione una sorta di messaggio privilegiato, che si
 richiede che sia trattato il prima possibile. Si fa riferimento a questa
-funzionalità come all'invio dei cosiddetti \textsl{dati urgenti} (o
+funzionalità come all'invio dei cosiddetti \textsl{dati urgenti} (o
 \textit{urgent data}); talvolta essi chiamati anche dati \textit{out-of-band}
 \textit{urgent data}); talvolta essi chiamati anche dati \textit{out-of-band}
-poiché, come vedremo più avanti, possono essere letti anche al di fuori del
+poiché, come vedremo più avanti, possono essere letti anche al di fuori del
 flusso di dati normale.
 
 flusso di dati normale.
 
-Come già accennato in sez.~\ref{sec:file_multiplexing} la presenza di dati
+Come già accennato in sez.~\ref{sec:file_multiplexing} la presenza di dati
 urgenti viene rilevata in maniera specifica sia di \func{select} (con il
 \itindex{file~descriptor~set} \textit{file descriptor set} \param{exceptfds})
 che da \func{poll} (con la condizione \const{POLLRDBAND}).
 
 
 urgenti viene rilevata in maniera specifica sia di \func{select} (con il
 \itindex{file~descriptor~set} \textit{file descriptor set} \param{exceptfds})
 che da \func{poll} (con la condizione \const{POLLRDBAND}).
 
 
-Le modalità di lettura dei dati urgenti sono due, la prima e più comune
+Le modalità di lettura dei dati urgenti sono due, la prima e più comune
 prevede l'uso di \func{recvmsg} con 
 
 
 % TODO aggiungere pezzo di codice per inviare dati urgenti all'echo server
 
 prevede l'uso di \func{recvmsg} con 
 
 
 % TODO aggiungere pezzo di codice per inviare dati urgenti all'echo server
 
-La seconda modalità di lettura prevede invece l'uso dell'opzione dei socket
+La seconda modalità di lettura prevede invece l'uso dell'opzione dei socket
 \const{SO\_OOBINLINE} (vedi sez.~\ref{sec:sock_generic_options}) che consente
 di ricevere i dati urgenti direttamente nel flusso dei dati del socket; in tal
 \const{SO\_OOBINLINE} (vedi sez.~\ref{sec:sock_generic_options}) che consente
 di ricevere i dati urgenti direttamente nel flusso dei dati del socket; in tal
-caso però si pone il problema di come distinguere i dati normali da quelli
-urgenti. Come già accennato in sez.~\ref{sec:sock_ioctl_IP} a questo scopo si
-può usare \func{ioctl} con l'operazione \const{SIOCATMARK}, che consente di
-sapere se si è arrivati o meno all'\textit{urgent mark}. 
+caso però si pone il problema di come distinguere i dati normali da quelli
+urgenti. Come già accennato in sez.~\ref{sec:sock_ioctl_IP} a questo scopo si
+può usare \func{ioctl} con l'operazione \const{SIOCATMARK}, che consente di
+sapere se si è arrivati o meno all'\textit{urgent mark}. 
 
 La procedura allora prevede che, una volta che si sia rilevata la presenza di
 dati urgenti, si ripeta la lettura ordinaria dal socket fintanto che
 \const{SIOCATMARK} non restituisce un valore diverso da zero; la successiva
 
 La procedura allora prevede che, una volta che si sia rilevata la presenza di
 dati urgenti, si ripeta la lettura ordinaria dal socket fintanto che
 \const{SIOCATMARK} non restituisce un valore diverso da zero; la successiva
-lettura restituirà i dati urgenti.
+lettura restituirà i dati urgenti.
 
 
 \itindend{out-of-band} 
 
 
 \itindend{out-of-band} 
@@ -105,7 +107,7 @@ lettura restituir
 \section{L'uso dell'I/O non bloccante}
 \label{sec:sock_noblok_IO}
 
 \section{L'uso dell'I/O non bloccante}
 \label{sec:sock_noblok_IO}
 
-Tratteremo in questa sezione le modalità avanzate che permettono di utilizzare
+Tratteremo in questa sezione le modalità avanzate che permettono di utilizzare
 i socket con una comunicazione non bloccante, in modo da 
 
 
 i socket con una comunicazione non bloccante, in modo da 
 
 
@@ -118,16 +120,15 @@ i socket con una comunicazione non bloccante, in modo da
 Abbiamo visto in sez.~\ref{sec:sock_ipv4_options} come di possa usare  
 \func{setsockopt} con l'opzione \const{IP\_OPTIONS} per impostare le opzioni  
 IP associate per i pacchetti associati ad un socket.  Vedremo qui il
 Abbiamo visto in sez.~\ref{sec:sock_ipv4_options} come di possa usare  
 \func{setsockopt} con l'opzione \const{IP\_OPTIONS} per impostare le opzioni  
 IP associate per i pacchetti associati ad un socket.  Vedremo qui il
-significato di tali opzioni e le modalità con cui esse possono essere
+significato di tali opzioni e le modalità con cui esse possono essere
 utilizzate ed impostate.
 
 utilizzate ed impostate.
 
+% LocalWords:  socket of multiplexing sez sendmsg recvmsg RECVERR kernel MSG
+% LocalWords:  ERRQUEUE sock err fig TCP dell'I setsockopt OPTIONS urgent poll
+% LocalWords:  select descriptor exceptfds POLLRDBAND OOBINLINE ioctl all' mark
+% LocalWords:  SIOCATMARK
 
 %%% Local Variables: 
 %%% mode: latex
 %%% TeX-master: "gapil"
 %%% End: 
 
 %%% Local Variables: 
 %%% mode: latex
 %%% TeX-master: "gapil"
 %%% End: 
-
-% LocalWords:  socket of multiplexing sez sendmsg recvmsg RECVERR kernel MSG
-% LocalWords:  ERRQUEUE sock err fig TCP dell'I setsockopt OPTIONS urgent poll
-% LocalWords:  select descriptor exceptfds POLLRDBAND OOBINLINE ioctl all' mark
-% LocalWords:  SIOCATMARK