X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=socket.tex;h=0d35c3ec43bea60c21f1bf3707fd05f192864f5a;hp=7ded670d34fa3ecc1f07a45f721b4b0dd8b3c7f8;hb=520fa6e7cd289a93a0955f3f91848ebd5b424250;hpb=13e1dfef7b970db44781986970292e62ad7c7c58 diff --git a/socket.tex b/socket.tex index 7ded670..0d35c3e 100644 --- a/socket.tex +++ b/socket.tex @@ -1,6 +1,6 @@ %% socket.tex %% -%% Copyright (C) 2000-2002 Simone Piccardi. Permission is granted to +%% Copyright (C) 2000-2003 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", @@ -13,8 +13,8 @@ In questo capitolo inizieremo a spiegare le caratteristiche salienti della principale interfaccia per la programmazione di rete, quella dei -\textit{socket}, che, pur essendo nata in ambiente Unix è usata ormai da tutti -i sistemi operativi. +\textit{socket}, che, pur essendo nata in ambiente Unix, è usata ormai da +tutti i sistemi operativi. Dopo una breve panoramica sulle caratteristiche di questa interfaccia vedremo come creare un socket e come collegarlo allo specifico protocollo di rete che @@ -732,12 +732,11 @@ cos \label{sec:sock_addr_func} In questa sezione tratteremo delle varie funzioni usate per manipolare gli -indirizzi, limitandoci però agli indirizzi internet. - -Come accennato gli indirizzi e i numeri di porta usati nella rete devono -essere forniti in formato opportuno (il \textit{network order}). Per capire -cosa significa tutto ciò occorre introdurre un concetto generale che tornerà -utile anche in seguito. +indirizzi, limitandoci però agli indirizzi internet. Come accennato gli +indirizzi e i numeri di porta usati nella rete devono essere forniti in +formato opportuno (il \textit{network order}). Per capire cosa significa tutto +ciò occorre introdurre un concetto generale che tornerà utile anche in +seguito. \subsection{La \textit{endianess}\index{endianess}} @@ -762,7 +761,7 @@ parte dal bit meno significativo \begin{figure}[htb] \centering - \includegraphics[height=5cm]{img/endianess} + \includegraphics[height=3cm]{img/endianess} \caption{Schema della disposizione dei dati in memoria a seconda della \textit{endianess}\index{endianess}.} \label{fig:sock_endianess} @@ -788,15 +787,11 @@ questi cambiamenti. 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, e ne sarà quindi -invertito l'ordine di lettura per cui, per riavere il valore originale, -dovranno essere rovesciati. - -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{ntonl} e \funcd{ntons} ed i -rispettivi prototipi sono: +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)} @@ -807,11 +802,11 @@ rispettivi prototipi sono: Converte l'intero a 16 bit \param{hostshort} dal formato della macchina a quello della rete. - \funcdecl{unsigned long int ntonl(unsigned long int netlong)} + \funcdecl{unsigned long int ntohl(unsigned long int netlong)} Converte l'intero a 32 bit \param{netlong} dal formato della rete a quello della macchina. - \funcdecl{unsigned sort int ntons(unsigned short int netshort)} + \funcdecl{unsigned sort int ntohs(unsigned short int netshort)} Converte l'intero a 16 bit \param{netshort} dal formato della rete a quello della macchina.