X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=simpltcp.tex;h=38df63e18b241f3dc0f99d3cabba23a58346f41f;hp=b024478486cfa3f02ea0f0df82b41adaaf1ee4a1;hb=056bbc90c8a0710b57fa7b13f5f0dfdad1b3ff3f;hpb=de73e63610d4ec307329b26c64467f27b6316688 diff --git a/simpltcp.tex b/simpltcp.tex index b024478..38df63e 100644 --- a/simpltcp.tex +++ b/simpltcp.tex @@ -48,7 +48,7 @@ corpo principale, costituito dalla funzione \texttt{main}. Questa si incarica di creare il socket, metterlo in ascolto di connessioni in arrivo e creare un processo figlio a cui delegare la gestione di ciascuna connessione. Questa parte, riportata in \nfig, è analoga a quella vista nel precedente esempio -esaminato in \secref{sec:TCPelem_serv_code}. +esaminato in \secref{sec:TCPel_cunc_serv}. \begin{figure}[!htb] \footnotesize @@ -114,7 +114,7 @@ int main(int argc, char *argv[]) La struttura di questa prima versione del server è sostanzialmente identica a quella dell'esempio citato, ed ad esso si applicano le considerazioni fatte in \secref{sec:TCPel_cunc_daytime}. Le uniche differenze rispetto all'esempio in -\figref{fig:TCPelem_serv_code} sono che in questo caso per il socket in +\figref{fig:TCPel_serv_code} sono che in questo caso per il socket in ascolto viene usata la porta 7 e tutta la gestione della comunicazione è delegata alla funzione \texttt{ServEcho}. % Per ogni connessione viene creato un @@ -147,7 +147,7 @@ void ServEcho(int sockfd) { \end{lstlisting} \caption{Codice della prima versione della funzione \texttt{ServEcho} per la gestione del servizio \texttt{echo}.} - \label{fig:TCPsimpl_sockecho_code} + \label{fig:TCPsimpl_server_elem_sub} \end{figure} Quando il client chiude la connessione il ricevimento del FIN fa ritornare la @@ -157,7 +157,7 @@ del processo figlio. \subsection{Il client} -\label{sec:TCPsimp_server_main} +\label{sec:TCPsimp_client_main} Il codice del client è riportato in \nfig, anche esso ricalca la struttura del precedente client per il servizio \texttt{daytime} (vedi @@ -201,7 +201,7 @@ int main(int argc, char *argv[]) } \end{lstlisting} \caption{Codice della prima versione del client \texttt{echo}.} - \label{fig:TCPsimpl_sockecho_code} + \label{fig:TCPsimpl_client_elem} \end{figure} La funzione \texttt{main} si occupa della creazione del socket e della @@ -234,7 +234,7 @@ void ClientEcho(FILE * filein, int socket) \end{lstlisting} \caption{Codice della prima versione della funzione \texttt{ClientEcho} per la gestione del servizio \texttt{echo}.} - \label{fig:TCPsimpl_sockecho_code} + \label{fig:TCPsimpl_client_echo_sub} \end{figure} La funzione utilizza due buffer per gestire i dati inviati e letti sul socket @@ -337,7 +337,7 @@ l'immediatamente stampa a video. \subsection{La conclusione normale} -\label{sec:TCPsimpl_startup} +\label{sec:TCPsimpl_conclusion} Tutto quello che scriveremo sul client sarà rimandato indietro dal server e ristampato a video fintanto che non concluderemo l'immissione dei dati; una @@ -394,7 +394,7 @@ casi seguenti: Tutto questo riguarda la connessione, c'è però un'altro effetto del procedimento di chiusura del processo figlio nel server, e cioè l'invio del segnale \texttt{SIGCHILD} al padre. Dato che non si è installato un -manipolatore (vedi \secref{cap:signal} per le problematiche relative) e che +manipolatore (vedi \secref{cha:signals} per le problematiche relative) e che l'azione di default per questo segnale è quella di essere ignorato quello che avremo è che il processo figlio entrerà nello stato di zombie, come risulta una volta che ripetiamo il comando \texttt{ps}: