-A questo punto il programma riprende di nuovo lo schema già visto usato dal
-server per il servizio \textit{daytime}, con l'unica differenza della chiamata
-alla funzione \code{PrintErr}, riportata in fig.~\ref{fig:TCP_PrintErr}, al
-posto di \func{perror} per la stampa degli errori.
-
-Si inizia con il porre (\texttt{\small 37--41}) in ascolto il socket, e poi si
-esegue indefinitamente il ciclo principale (\texttt{\small 42--59}).
-All'interno di questo si ricevono (\texttt{\small 43--47}) le connessioni,
-creando (\texttt{\small 48--51}) un processo figlio per ciascuna di esse.
-Quest'ultimo (\texttt{\small 52--56}), chiuso (\texttt{\small 53}) il
-\textit{listening socket}, esegue (\texttt{\small 54}) la funzione di gestione
+
+\begin{figure}[!htb]
+ \footnotesize \centering
+ \begin{minipage}[c]{\codesamplewidth}
+ \includecodesample{listati/TCP_echod_first_main.c}
+ \end{minipage}
+ \normalsize
+ \caption{Codice di inizializzatione della prima versione del server
+ per il servizio \textit{echo}.}
+ \label{fig:TCP_echo_server_first_main}
+\end{figure}
+
+A questo punto il programma prosegue nel ciclo principale, illustrato in
+fig.~\ref{fig:TCP_echo_server_first_main}, usando lo schema già visto in
+precedenza per server per il servizio \textit{daytime}, con l'unica differenza
+della chiamata alla funzione \code{PrintErr}, riportata in
+fig.~\ref{fig:TCP_PrintErr}, al posto di \func{perror} per la stampa degli
+errori.
+
+Si inizia con il porre (\texttt{\small 3--6}) in ascolto il socket, e poi si
+esegue indefinitamente il ciclo principale (\texttt{\small 7--26}).
+All'interno di questo si ricevono (\texttt{\small 9--12}) le connessioni,
+creando (\texttt{\small 13--16}) un processo figlio per ciascuna di esse.
+Quest'ultimo (\texttt{\small 17--21}), chiuso (\texttt{\small 18}) il
+\textit{listening socket}, esegue (\texttt{\small 19}) la funzione di gestione