tre note sul POLL* e i socket piu getsockopt
[gapil.git] / tcpsock.tex
index bc65ae9a0eedba89548df77f7228f5839ab4f2e0..ad5e2056685f04fe939aae1bc1db38698ac35c62 100644 (file)
@@ -3,7 +3,7 @@
 %% Copyright (C) 2000-2004 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 "Prefazione",
+%% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the
 %% license is included in the section entitled "GNU Free Documentation
 %% License".
@@ -2980,7 +2980,7 @@ caso di nuovo il client non 
 suppone che il programma server non venga terminato correttamente, ma si
 blocchi tutto senza la possibilità di avere l'emissione di un segmento FIN che
 segnala la terminazione della connessione. Di nuovo fintanto che la
-connessione non si riattiva )con il riavvio della macchina del server) il
+connessione non si riattiva (con il riavvio della macchina del server) il
 client non è in grado di fare altro che accettare dell'input e tentare di
 inviarlo. La differenza in questo caso è che non appena la connessione
 ridiventa attiva i dati verranno sì trasmessi, ma essendo state perse tutte le
@@ -3146,8 +3146,8 @@ Si 
 della nostra funzione \func{ClientEcho}, in grado di gestire correttamente
 l'intero flusso di dati fra client e server. Il codice completo del client,
 comprendente la gestione delle opzioni a riga di comando e le istruzioni per
-la creazione della connessione, si trova nel file \texttt{TCP\_echo.c},
-distribuito coi sorgenti allegati alla guida.
+la creazione della connessione, si trova nel file
+\texttt{TCP\_echo\_fourth.c}, distribuito coi sorgenti allegati alla guida.
 
 La nuova versione è molto simile alla precedente di
 fig.~\ref{fig:TCP_ClientEcho_third}; la prima differenza è l'introduzione
@@ -3400,9 +3400,9 @@ condizioni della rete. Inoltre deve essere specificato come viene classificato
 il traffico nella suddivisione fra dati normali e prioritari. In generale
 pertanto:
 \begin{itemize}
-\item i dati trasmessi su un socket vengono considerati traffico normale,
-  pertanto vengono rilevati da una selezione con \const{POLLIN} o
-  \const{POLLRDNORM}.
+\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
   traffico prioritario e vengono rilevati da una condizione \const{POLLIN},
   \const{POLLPRI} o \const{POLLRDBAND}.
@@ -3410,6 +3410,10 @@ pertanto:
   viene considerato traffico normale, pertanto viene rilevato da una
   condizione \const{POLLIN} o \const{POLLRDNORM}, ma una conseguente chiamata
   a \func{read} restituirà 0.
+\item la disponibilità di spazio sul socket per la scrittura di dati viene
+  segnalata con una condizione \const{POLLOUT}.
+\item quando uno dei due capi del socket chiude un suo lato della connessione
+  con \func{shutdown} si riceve una condizione di \const{POLLHUP}.
 \item la presenza di un errore sul socket (sia dovuta ad un segmento RST che a
   timeout) viene considerata traffico normale, ma viene segnalata anche dalla
   condizione \const{POLLERR}.