X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=elemtcp.tex;h=3c4b2169d1637903a2e7feefd4e2d8ec852e7d0b;hp=9cfcb35fc356cfdfca660d1f7fff2638c244cbdb;hb=429f6e0da8fc282eb6611b6fe83fdf58ae8da611;hpb=43c4caa7e3d1c681d26f4381ec19f41325786ea1 diff --git a/elemtcp.tex b/elemtcp.tex index 9cfcb35..3c4b216 100644 --- a/elemtcp.tex +++ b/elemtcp.tex @@ -13,7 +13,7 @@ connessione TCP. \label{sec:TCPel_connession} Prima di entrare nei dettagli delle funzioni usate nelle applicazioni che -utilizzano i sokcet TCP, è fondamentale spiegare alcune basi del funzionamento +utilizzano i socket TCP, è fondamentale spiegare alcune basi del funzionamento del TCP; la conoscenza del funzionamento del protocollo è infatti essenziale per capire il modello di programmazione ed il funzionamento delle API. @@ -681,18 +681,21 @@ indirizzo di origine l'indirizzo di destinazione specificato dal SYN del client. Per specificare un indirizzo generico con IPv4 si usa il valore -\texttt{INADDR\_ANY}, il cui valore, come visto anche negli esempi precedenti +\macro{INADDR\_ANY}, il cui valore, come visto anche negli esempi precedenti è pari a zero, nell'esempio \figref{fig:net_serv_code} si è usata un'assegnazione immediata del tipo: -\begin{verbatim} - serv_add.sin_addr.s_addr = htonl(INADDR_ANY); /* connect from anywhere */ -\end{verbatim} -Si noti che si è usato \texttt{htonl} per assegnare il valore -\texttt{INADDR\_ANY}; benché essendo questo pari a zero il riordinamento sia -inutile; ma dato che tutte le costanti \texttt{INADDR\_} sono definite +\footnotesize +\begin{lstlisting}[labelstep=0,frame=,indent=1cm]{} + serv_add.sin_addr.s_addr = htonl(INADDR_ANY); /* connect from anywhere */ +\end{lstlisting} +\normalsize + +Si noti che si è usato \func{htonl} per assegnare il valore +\macro{INADDR\_ANY}; benché essendo questo pari a zero il riordinamento sia +inutile; ma dato che tutte le costanti \macro{INADDR\_} sono definite secondo l'ordinamento della macchina è buona norma usare sempre la funzione -\texttt{htonl}. +\macro{htonl}. L'esempio precedete funziona con IPv4 dato che l'indirizzo è rappresentabile anche con un intero a 32 bit; non si può usare lo stesso metodo con IPv6, @@ -702,12 +705,14 @@ assegnazione. Per questo nell'header \texttt{netinet/in.h} variabile \texttt{in6addr\_any} (dichiarata come \texttt{extern}, ed inizializzata dal sistema al valore \texttt{IN6ADRR\_ANY\_INIT}) che permette di effettuare una assegnazione del tipo: -\begin{verbatim} +\footnotesize +\begin{lstlisting}[labelstep=0,frame=,indent=1cm]{} serv_add.sin6_addr = in6addr_any; /* connect from anywhere */ -\end{verbatim} +\end{lstlisting} +\normalsize -\subsection{La funzione \texttt{connect}} +\subsection{La funzione \func{connect}} \label{sec:TCPel_func_connect} La funzione \texttt{connect} è usata da un client TCP per stabilire la