X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=socket.tex;h=d3bbecc6a4f764f3da529aa3595c1517a3eb0501;hp=43a5dbd75a0e4bdbebedd0960eb687bb62d581b7;hb=9b7af600ff0f73bc946c9d160c320667c7a91347;hpb=88d22f4971adcbdb816c405a1375ae0a8d57bdde diff --git a/socket.tex b/socket.tex index 43a5dbd..d3bbecc 100644 --- a/socket.tex +++ b/socket.tex @@ -524,7 +524,7 @@ tab.~\ref{tab:TCP_ipv4_addr}, che rincontreremo più avanti. Infine occorre sottolineare che sia gli indirizzi che i numeri di porta devono essere specificati in quello che viene chiamato \textit{network order}, cioè con i bit ordinati in formato \textit{big endian} (vedi -sez.~\ref{sec:sock_endianness}), questo comporta la necessità di usare apposite +sez.~\ref{sec:endianness}), questo comporta la necessità di usare apposite funzioni di conversione per mantenere la portabilità del codice (vedi sez.~\ref{sec:sock_addr_func} per i dettagli del problema e le relative soluzioni). @@ -640,7 +640,7 @@ inferiori a 129 sono usati per le \textsl{porte riservate}, e possono essere usati solo da processi con i privilegi di amministratore o con la \textit{capability} \const{CAP\_NET\_BIND\_SERVICE}. L'indirizzo remoto è specificato nella struttura \var{sat\_addr}, e deve essere in \textit{network - order} (vedi sez.~\ref{sec:sock_endianness}); esso è composto da un parte di + order} (vedi sez.~\ref{sec:endianness}); esso è composto da un parte di rete data dal campo \var{s\_net}, che può assumere il valore \const{AT\_ANYNET}, che indica una rete generica e vale anche per indicare la rete su cui si è, il singolo nodo è indicato da \var{s\_node}, e può prendere @@ -786,15 +786,15 @@ può comportare la necessità di eseguire delle conversioni. \subsection{Le funzioni per il riordinamento} \label{sec:sock_func_ord} -Come già visto in sez.~\ref{sec:sock_endianness} il problema connesso -\itindex{endianness} all'\textit{endianness} è 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: +Come già visto in sez.~\ref{sec:endianness} il problema connesso +all'\textit{endianness} è 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)}