% conoscere il numero di chi si vuole chiamare. La funzione \func{accept} è
% quando si risponde al telefono.
-\begin{figure}[htb]
- \centering
- \includegraphics[width=10cm]{img/three_way_handshake}
+\begin{figure}[!htb]
+ \centering \includegraphics[width=10cm]{img/three_way_handshake}
\caption{Il \textit{three way handshake} del TCP.}
\label{fig:TCP_TWH}
\end{figure}
fig.~\ref{fig:TCP_close} si è rappresentato graficamente lo sequenza di
scambio dei segmenti che conclude la connessione.
-\begin{figure}[htb]
- \centering
- \includegraphics[width=10cm]{img/tcp_close}
+\begin{figure}[!htb]
+ \centering \includegraphics[width=10cm]{img/tcp_close}
\caption{La chiusura di una connessione TCP.}
\label{fig:TCP_close}
\end{figure}
pacchetti che avviene per una un esempio di connessione, insieme ai vari stati
che il protocollo viene ad assumere per i due lati, server e client.
-\begin{figure}[htb]
- \centering
- \includegraphics[width=9cm]{img/tcp_connection}
+\begin{figure}[!htb]
+ \centering \includegraphics[width=9cm]{img/tcp_connection}
\caption{Schema dello scambio di pacchetti per un esempio di connessione.}
\label{fig:TCP_conn_example}
\end{figure}
fig.~\ref{fig:TCP_port_alloc} sono riportate quelle di BSD e Linux.
\begin{figure}[!htb]
- \centering
- \includegraphics[width=13cm]{img/port_alloc}
+ \centering \includegraphics[width=13cm]{img/port_alloc}
\caption{Allocazione dei numeri di porta.}
\label{fig:TCP_port_alloc}
\end{figure}
vuota, il processo viene posto in attesa e risvegliato all'arrivo della prima
connessione completa.
-\begin{figure}[htb]
- \centering
- \includegraphics[width=11cm]{img/tcp_listen_backlog}
+\begin{figure}[!htb]
+ \centering \includegraphics[width=11cm]{img/tcp_listen_backlog}
\caption{Schema di funzionamento delle code delle connessioni complete ed
incomplete.}
\label{fig:TCP_listen_backlog}
generale non è così, e con i socket questo è particolarmente evidente.
-\begin{figure}[htb]
+\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/FullRead.c}
\end{minipage}
\normalsize
disponibile fra i sorgenti allegati alla guida nei file \file{FullRead.c} e
\file{FullWrite.c}.
-\begin{figure}[htb]
+\begin{figure}[!htbp]
\centering
\footnotesize \centering
- \begin{minipage}[c]{15cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/FullWrite.c}
\end{minipage}
\normalsize
sezione dei codici sorgente e può essere compilato su una qualunque macchina
GNU/Linux.
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/TCP_daytime.c}
\end{minipage}
\normalsize
\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/TCP_iter_daytimed.c}
\end{minipage}
\normalsize
server, nel file \texttt{TCP\_cunc\_daytimed.c}, è allegato insieme ai
sorgenti degli altri esempi.
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/TCP_cunc_daytimed.c}
\end{minipage}
\normalsize
sez.~\ref{sec:TCP_daytime_client}), e la prima parte (\texttt{\small 10--27})
è sostanzialmente identica, a parte l'uso di una porta diversa.
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15.6 cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/TCP_echo_first.c}
\end{minipage}
\normalsize
stringa e per poter usare (\texttt{\small 9}) la funzione \func{fputs} per
scriverli su \file{stdout}.
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15.6cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/ClientEcho_first.c}
\end{minipage}
\normalsize
\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15.6cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/TCP_echod_first.c}
\end{minipage}
\normalsize
(\texttt{\small 5}) semplicemente la funzione \func{perror} per stampare sullo
standard error.
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15.6cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/PrintErr.c}
\end{minipage}
\normalsize
dati di cui è richiesta la scrittura vengano trasmessi con una singola
\func{write}.
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15.6cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/ServEcho_first.c}
\end{minipage}
\normalsize
allegati.} come mostrato in fig.~\ref{fig:sig_SignalRestart_code}, ed
installeremo il gestore usando quest'ultima.
-\begin{figure}[!htb]
- \footnotesize \centering
- \begin{minipage}[c]{15.6cm}
+\begin{figure}[!htbp]
+ \footnotesize \centering
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/SignalRestart.c}
\end{minipage}
\normalsize
gestione di tutte queste opzioni, che può essere trovata nel sorgente del
programma.
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15.6cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/TCP_echod_second.c}
\end{minipage}
\normalsize
un controllo in caso di errore; il codice della nuova versione è mostrato in
fig.~\ref{fig:TCP_ServEcho_second}.
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15.6cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/ServEcho_second.c}
\end{minipage}
\normalsize
l'invio di un segmento RST, prima che nel server sia stata chiamata la
funzione \func{accept}.
-\begin{figure}[htb]
- \centering
- \includegraphics[width=10cm]{img/tcp_client_early_abort}
+\begin{figure}[!htb]
+ \centering \includegraphics[width=10cm]{img/tcp_client_early_abort}
\caption{Un possibile caso di terminazione precoce della connessione.}
\label{fig:TCP_early_abort}
\end{figure}
modo da controllare gli stati di uscita delle varie chiamate. Si è riportata
la nuova versione della funzione in fig.~\ref{fig:TCP_ClientEcho_second}.
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15.6cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/ClientEcho_second.c}
\end{minipage}
\normalsize
lettura (nell'ultimo caso anche in scrittura, ma questo non è necessario ai
nostri scopi).
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15.6cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/ClientEcho_third.c}
\end{minipage}
\normalsize
socket da parte del server il client potrà essere sicuro della ricezione di
tutti i dati e della terminazione effettiva della connessione.
-\begin{figure}[!htb]
+\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15.6cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/ClientEcho.c}
\end{minipage}
\normalsize
utilizzerà \func{select} per rilevare la presenza di dati in arrivo su tutti i
file descriptor attivi, operando direttamente su ciascuno di essi.
-\begin{figure}[htb]
- \centering
- \includegraphics[width=13cm]{img/TCPechoMult}
+\begin{figure}[!htb]
+ \centering \includegraphics[width=13cm]{img/TCPechoMult}
\caption{Schema del nuovo server echo basato sull'I/O multiplexing.}
\label{fig:TCP_echo_multiplex}
\end{figure}
\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15.6cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/select_echod.c}
\end{minipage}
\normalsize
\begin{figure}[!htbp]
\footnotesize \centering
- \begin{minipage}[c]{15.6cm}
+ \begin{minipage}[c]{\codesamplewidth}
\includecodesample{listati/poll_echod.c}
\end{minipage}
\normalsize