Una lunga serie di modifiche per tenere conto della riorganizzazione della
[gapil.git] / tcpsock.tex
index 35c5ef2cd5d73573ce76357c6ef9be0a5288ad56..8c50b5e5026efb5ef176b94f7bc25b59700acb2f 100644 (file)
@@ -1545,13 +1545,13 @@ ulteriori connessioni.
 Si noti come il figlio operi solo sul socket connesso, chiudendo
 immediatamente (\texttt{\small 33}) il socket \var{list\_fd}; mentre il padre
 continua ad operare solo sul socket in ascolto chiudendo (\texttt{\small 48})
-\var{sock\_fd} al ritorno dalla \func{fork}. Per quanto abbiamo detto in
+\var{conn\_fd} al ritorno dalla \func{fork}. Per quanto abbiamo detto in
 \secref{sec:TCP_func_close} nessuna delle due chiamate a \func{close} causa
 l'innesco della sequenza di chiusura perché il numero di riferimenti al file
 descriptor non si è annullato.
 
 Infatti subito dopo la creazione del socket \var{list\_fd} ha una referenza, e
-lo stesso vale per \var{sock\_fd} dopo il ritorno di \func{accept}, ma dopo la
+lo stesso vale per \var{conn\_fd} dopo il ritorno di \func{accept}, ma dopo la
 \func{fork} i descrittori vengono duplicati nel padre e nel figlio per cui
 entrambi i socket si trovano con due referenze. Questo fa si che quando il
 padre chiude \var{sock\_fd} esso resta con una referenza da parte del figlio,
@@ -1649,7 +1649,7 @@ compito del client leggere la risposta del server e stamparla sullo standard
 output.
 
 
-\subsection{Il client: prima versione}
+\subsection{Il client \textit{echo}: prima versione}
 \label{sec:TCP_echo_client}
 
 Il codice della prima versione del client per il servizio \textit{echo},
@@ -1731,7 +1731,7 @@ programma, usato per
 illustriamo immediatamente.
 
 
-\subsection{Il server: prima versione}
+\subsection{Il server \textit{echo}: prima versione}
 \label{sec:TCPsimp_server_main}
 
 La prima versione del server, contenuta nel file \file{TCP\_echod\_first.c}, è
@@ -2152,10 +2152,10 @@ perch
 interrotta dall'arrivo di \const{SIGCHLD}, è quella ad \func{accept}, che è
 l'unica funzione che può mettere il processo padre in stato di sleep nel
 periodo in cui un figlio può terminare; si noti infatti come le altre
-\textit{slow system call}\footnote{si ricordi la distinzione fatta in
-  \secref{sec:sig_gen_beha}.} o sono chiamate prima di entrare nel ciclo
-principale, quando ancora non esistono processi figli, o sono chiamate dai
-figli stessi e non risentono di \const{SIGCHLD}.
+\index{system call lente} \textit{slow system call}\footnote{si ricordi la
+  distinzione fatta in \secref{sec:sig_gen_beha}.} o sono chiamate prima di
+entrare nel ciclo principale, quando ancora non esistono processi figli, o
+sono chiamate dai figli stessi e non risentono di \const{SIGCHLD}.
 
 Per questo l'unica modifica sostanziale nel ciclo principale (\texttt{\small
   23--42}), rispetto precedente versione di \figref{fig:TCP_ServEcho_first}, è
@@ -2179,7 +2179,33 @@ ricevuto da \var{accept} viene convertito in una stringa che poi
 (\texttt{\small 34--39}) viene opportunamente stampata o sullo schermo o nei
 log.
 
+Infine come ulteriore miglioria si è perfezionata la funzione \code{ServEcho},
+sia per tenere conto della nuova funzionalità di debugging, che per effettuare
+un controllo in caso di errore; il codice della nuova versione è mostrato in
+\figref{fig:TCP_ServEcho_second}.
 
+\begin{figure}[!htb] 
+  \footnotesize \centering
+  \begin{minipage}[c]{15.6cm}
+    \includecodesample{listati/ServEcho_second.c}
+  \end{minipage} 
+  \normalsize
+  \caption{Codice della seconda versione della funzione \code{ServEcho} per la
+    gestione del servizio \textit{echo}.}
+  \label{fig:TCP_ServEcho_second}
+\end{figure}
+
+Rispetto alla precedente versione di \figref{fig:TCP_ServEcho_first} in questo
+caso si è provveduto a controllare (\texttt{\small 7--10}) il valore di
+ritorno di \func{read} per rilevare un eventuale errore, in modo da stampare
+(\texttt{\small 8}) un messaggio di errore e ritornare (\texttt{\small 9})
+concludendo la connessione.
+
+Inoltre qualora sia stata attivata la funzionalità di debug (avvalorando
+\var{debugging} tramite l'apposita opzione \texttt{-d}) si provvederà a
+stampare (tenendo conto della modalità di invocazione del server, se
+interattiva o in forma di demone) il numero di byte e la stringa letta dal
+client (\texttt{\small 16--24}).
 
 
 \section{I vari scenari critici}