X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=tcpsock.tex;h=bc65ae9a0eedba89548df77f7228f5839ab4f2e0;hp=7dcdaf1ea5579bd16a542bfb088c064b5dfd8bd2;hb=276ae7fb9a1e43b6d5e5944071848094c8cc2c3b;hpb=c474f4307db945bc45287edd0ea4c2c29374d0ee diff --git a/tcpsock.tex b/tcpsock.tex index 7dcdaf1..bc65ae9 100644 --- a/tcpsock.tex +++ b/tcpsock.tex @@ -1302,7 +1302,7 @@ arrivati alla fine del file (per i socket questo significa in genere che l'altro capo è stato chiuso, e quindi non sarà più possibile leggere niente) e pertanto si ritorna senza aver concluso la lettura di tutti i byte richiesti. Entrambe le funzioni restituiscono 0 in caso di successo, ed un -valore negativo in caso di errore, \texttt{FullRead} restituisce il numero di +valore negativo in caso di errore, \func{FullRead} restituisce il numero di byte non letti in caso di end-of-file prematuro. @@ -1316,9 +1316,9 @@ nell'\href{http://www.ietf.org/rfc/rfc867.txt}{RFC~867}, che restituisce l'ora locale della macchina a cui si effettua la richiesta, e che è assegnato alla porta 13. -In fig.~\ref{fig:TCP_daytime_client_code} è riportata la sezione principale del -codice del nostro client. Il sorgente completo del programma -(\file{TCP\_daytime.c}, che comprende il trattamento delle opzioni ed una +In fig.~\ref{fig:TCP_daytime_client_code} è riportata la sezione principale +del codice del nostro client. Il sorgente completo del programma +(\texttt{TCP\_daytime.c}, che comprende il trattamento delle opzioni ed una funzione per stampare un messaggio di aiuto) è allegato alla guida nella sezione dei codici sorgente e può essere compilato su una qualunque macchina GNU/Linux. @@ -1418,7 +1418,8 @@ elementare, che sia anche in grado di rispondere al precedente client. Come primo esempio realizzeremo un server iterativo, in grado di fornire una sola risposta alla volta. Il codice del programma è nuovamente mostrato in fig.~\ref{fig:TCP_daytime_iter_server_code}, il sorgente completo -(\file{TCP\_iter\_daytimed.c}) è allegato insieme agli altri file degli esempi. +(\texttt{TCP\_iter\_daytimed.c}) è allegato insieme agli altri file degli +esempi. \begin{figure}[!htbp] \footnotesize \centering @@ -1515,8 +1516,8 @@ In fig.~\ref{fig:TCP_daytime_cunc_server_code} codice, in cui si sono tralasciati il trattamento delle opzioni e le parti rimaste invariate rispetto al precedente esempio (cioè tutta la parte riguardante l'apertura passiva del socket). Al solito il sorgente completo del -server, nel file \file{TCP\_cunc\_daytimed.c}, è allegato insieme ai sorgenti -degli altri esempi. +server, nel file \texttt{TCP\_cunc\_daytimed.c}, è allegato insieme ai +sorgenti degli altri esempi. \begin{figure}[!htb] \footnotesize \centering @@ -1652,11 +1653,11 @@ output. \label{sec:TCP_echo_client} Il codice della prima versione del client per il servizio \textit{echo}, -disponibile nel file \file{TCP\_echo\_first.c}, è riportato in +disponibile nel file \texttt{TCP\_echo\_first.c}, è riportato in fig.~\ref{fig:TCP_echo_client_1}. Esso ricalca la struttura del precedente client per il servizio \textit{daytime} (vedi -sez.~\ref{sec:TCP_daytime_client}), e la prima parte (\texttt{\small 10--27}) è -sostanzialmente identica, a parte l'uso di una porta diversa. +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] \footnotesize \centering @@ -1733,11 +1734,11 @@ illustriamo immediatamente. \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}, è -riportata in fig.~\ref{fig:TCP_echo_server_first_code}. Come abbiamo fatto per -il client anche il server è stato diviso in un corpo principale, costituito -dalla funzione \code{main}, che è molto simile a quello visto nel precedente -esempio per il server del servizio \textit{daytime} di +La prima versione del server, contenuta nel file \texttt{TCP\_echod\_first.c}, +è riportata in fig.~\ref{fig:TCP_echo_server_first_code}. Come abbiamo fatto +per il client anche il server è stato diviso in un corpo principale, +costituito dalla funzione \code{main}, che è molto simile a quello visto nel +precedente esempio per il server del servizio \textit{daytime} di sez.~\ref{sec:TCP_daytime_cunc_server}, e da una funzione ausiliaria \code{ServEcho} che si cura della gestione del servizio. @@ -2097,8 +2098,8 @@ riscrittura parziale del server, la nuova versione di questo, in cui si sono introdotte una serie di nuove opzioni che ci saranno utili per il debug, è mostrata in fig.~\ref{fig:TCP_echo_server_code_second}, dove si sono riportate la sezioni di codice modificate nella seconda versione del programma, il -codice completo di quest'ultimo si trova nel file \file{TCP\_echod\_second.c} -dei sorgenti allegati alla guida. +codice completo di quest'ultimo si trova nel file +\texttt{TCP\_echod\_second.c} dei sorgenti allegati alla guida. La prima modifica effettuata è stata quella di introdurre una nuova opzione a riga di comando, \texttt{-c}, che permette di richiedere il comportamento @@ -3141,11 +3142,11 @@ tutti i dati e della terminazione effettiva della connessione. \label{fig:TCP_ClientEcho} \end{figure} -Si è allora riportato in fig.~\ref{fig:TCP_ClientEcho} la versione finale della -nostra funzione \func{ClientEcho}, in grado di gestire correttamente l'intero -flusso di dati fra client e server. Il codice completo del client, +Si è allora riportato in fig.~\ref{fig:TCP_ClientEcho} la versione finale +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 \file{TCP\_echo.c}, +la creazione della connessione, si trova nel file \texttt{TCP\_echo.c}, distribuito coi sorgenti allegati alla guida. La nuova versione è molto simile alla precedente di @@ -3437,10 +3438,11 @@ ma la struttura del programma resta sostanzialmente la stessa. In fig.~\ref{fig:TCP_PollEchod} è riportata la sezione principale della nuova versione del server, la versione completa del codice è riportata nel file -\file{poll\_echod.c} dei sorgenti allegati alla guida. Al solito nella figura -si sono tralasciate la gestione delle opzioni, la creazione del socket in -ascolto, la cessione dei privilegi e le operazioni necessarie a far funzionare -il programma come demone, privilegiando la sezione principale del programma. +\texttt{poll\_echod.c} dei sorgenti allegati alla guida. Al solito nella +figura si sono tralasciate la gestione delle opzioni, la creazione del socket +in ascolto, la cessione dei privilegi e le operazioni necessarie a far +funzionare il programma come demone, privilegiando la sezione principale del +programma. Come per il precedente server basato su \func{select} il primo passo (\texttt{\small 2--8}) è quello di inizializzare le variabili necessarie. Dato