%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
-%% Free Software Foundation; with the Invariant Sections being "Prefazione",
+%% Free Software Foundation; with the Invariant Sections being "Un preambolo",
%% with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the
%% license is included in the section entitled "GNU Free Documentation
%% License".
può essere un file (di tipo socket) nel filesystem o una stringa univoca
(mantenuta in uno spazio di nomi astratto). Nel primo caso l'indirizzo viene
specificato come una stringa (terminata da uno zero) corrispondente al
-pathname del file; nel secondo invece \var{sun\_path} inizia con uno zero e
-vengono usati come nome i restanti byte come stringa, senza terminazione.
+\index{\textit{pathname}}\textit{pathname} del file; nel secondo invece
+\var{sun\_path} inizia con uno zero e vengono usati come nome i restanti byte
+come stringa, senza terminazione.
\subsection{La struttura degli indirizzi AppleTalk}
seguito.
-\subsection{La \textit{endianess}\index{endianess}}
+\subsection{La \textit{endianess}}
\label{sec:sock_endianess}
+\index{\textit{endianess}|(}
La rappresentazione di un numero binario in un computer può essere fatta in
due modi, chiamati rispettivamente \textit{big endian} e \textit{little
endian} a seconda di come i singoli bit vengono aggregati per formare le
\centering
\includegraphics[height=3cm]{img/endianess}
\caption{Schema della disposizione dei dati in memoria a seconda della
- \textit{endianess}\index{endianess}.}
+ \textit{endianess}.}
\label{fig:sock_endianess}
\end{figure}
-Si può allora verificare quale tipo di endianess usa il proprio computer con
-un programma elementare che si limita ad assegnare un valore ad una variabile
-per poi ristamparne il contenuto leggendolo un byte alla volta. Il codice di
-detto programma, \file{endtest.c}, è nei sorgenti allegati, allora se lo
-eseguiamo su un PC otterremo:
+Si può allora verificare quale tipo di \textit{endianess} usa il proprio
+computer con un programma elementare che si limita ad assegnare un valore ad
+una variabile per poi ristamparne il contenuto leggendolo un byte alla volta.
+Il codice di detto programma, \file{endtest.c}, è nei sorgenti allegati,
+allora se lo eseguiamo su un PC otterremo:
\begin{verbatim}
[piccardi@gont sources]$ ./endtest
Using value ABCDEF01
\end{verbatim}%$
-La \textit{endianess}\index{endianess} di un computer dipende essenzialmente
-dalla architettura hardware usata; Intel e Digital usano il \textit{little
- endian}, Motorola, IBM, Sun (sostanzialmente tutti gli altri) usano il
-\textit{big endian}. Il formato dei dati contenuti nelle intestazioni dei
-protocolli di rete è anch'esso \textit{big endian}; altri esempi di uso di
-questi due diversi formati sono quello del bus PCI, che è \textit{little
- endian}, o quello del bus VME che è \textit{big endian}.
+La \textit{endianess} di un computer dipende essenzialmente dalla architettura
+hardware usata; Intel e Digital usano il \textit{little endian}, Motorola,
+IBM, Sun (sostanzialmente tutti gli altri) usano il \textit{big endian}. Il
+formato dei dati contenuti nelle intestazioni dei protocolli di rete è
+anch'esso \textit{big endian}; altri esempi di uso di questi due diversi
+formati sono quello del bus PCI, che è \textit{little endian}, o quello del
+bus VME che è \textit{big endian}.
Esistono poi anche dei processori che possono scegliere il tipo di formato
all'avvio e alcuni che, come il PowerPC o l'Intel i860, possono pure passare
\textit{little endian}). Infine la funzione restituisce (\texttt{\small 12})
il valore del confonto delle due variabili.
+\index{\textit{endianess}|)}
\subsection{Le funzioni per il riordinamento}
\label{sec:sock_func_ord}
-Il problema connesso all'endianess\index{endianess} è che quando si passano
-dei dati da un tipo di architettura all'altra i dati vengono interpretati in
-maniera diversa, e ad esempio nel caso dell'intero a 16 bit ci si ritroverà
-con i due byte in cui è suddiviso scambiati di posto. Per questo motivo si
-usano delle funzioni di conversione che servono a tener conto automaticamente
-della possibile differenza fra l'ordinamento usato sul computer e quello che
-viene usato nelle trasmissione sulla rete; queste funzioni sono \funcd{htonl},
-\funcd{htons}, \funcd{ntohl} e \funcd{ntohs} ed i rispettivi prototipi sono:
+Il problema connesso all'endianess\index{\textit{endianess}} è che quando si
+passano dei dati da un tipo di architettura all'altra i dati vengono
+interpretati in maniera diversa, e ad esempio nel caso dell'intero a 16 bit ci
+si ritroverà con i due byte in cui è suddiviso scambiati di posto. Per questo
+motivo si usano delle funzioni di conversione che servono a tener conto
+automaticamente della possibile differenza fra l'ordinamento usato sul
+computer e quello che viene usato nelle trasmissione sulla rete; queste
+funzioni sono \funcd{htonl}, \funcd{htons}, \funcd{ntohl} e \funcd{ntohs} ed i
+rispettivi prototipi sono:
\begin{functions}
\headdecl{netinet/in.h}
\funcdecl{unsigned long int htonl(unsigned long int hostlong)}