Ampliata select e rivisto il paragrafo su I/I multiplexing, iniziato il
[gapil.git] / tcpsockadv.tex
index 3ac534820006db9fef38c576874a318f6ae2f162..81c37eb5bc981d8f912ea56cdb414f7e10634040 100644 (file)
@@ -1,4 +1,4 @@
-%% tcpsockadv.tex
+ %% tcpsockadv.tex
 %%
 %% Copyright (C) 2003 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
@@ -17,9 +17,44 @@ socket TCP.
 
 
 \section{Socket multiplexing}
-\label{sec:TCP_sock_mutiplexing}
+\label{sec:TCP_sock_multiplexing}
+
+Affronteremo in questa sezione l'utilizzo dell'I/O multiplexing, affrontato in
+\secref{sec:file_multiplexing}, nell'ambito delle applicazioni di rete. Già in
+\ref{sec:TCP_server_crash} era emerso il problema relativo al client del
+servizio echo che non era in grado di accorgersi della terminazione precoce
+del server essendo bloccato nella lettura dei dati immessi da tastiera.
+
+Abbiamo visto in \secref{sec:file_multiplexing} quali sono le funzionalità del
+sistema che ci permettono di tenere sotto controllo più file descriptor in
+contemporanea; in quella occasione non abbiamo fatto esempi, in quanto quando
+si tratta con file normali questa tipologia di I/O non viene usata, è invece
+un caso tipico delle applicazioni di rete quello di dover gestire varie
+connessioni da cui possono arrivare dati comuni in maniera asincrona, per cui
+riprenderemo l'argomento in questa sezione.
+
+
+
+\subsection{La funzione \func{select} con i socket.}
+\label{sec:TCP_sock_select}
+
+
+
+
+Iniziamo con la prima delle funzioni usate per l'I/O multiplexing,
+\func{select}, il suo funzionamento è già stato descritto in dettaglio in
+\secref{sec:file_multiplexing}; e sappiamo che la funzione ritorna quando uno
+o più dei file descriptor messi sotto controllo è pronto per la relativa
+operazione. 
+
+In quell'occasione non abbiamo però definito cosa si intende per pronto,
+infatti se per dei normali file, o anche per delle pipe, la condizione di
+essere pronti per la lettura o la scrittura è ovvia, lo è un po' meno di meno
+nel caso dei socket, visto che intervengono tutte le possibili condizioni
+dovute alla rete. Occorre allora specificare quali sono le condizioni in cui
+un socket risulta \textsl{pronto}.
+
 
-Affronteremo in questa sezione l'utilizzo dei socket