X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=socket.tex;h=ecf1a9eeb826183a1a6377e0cf76e52a1630e59a;hb=f15d1cc1ff7e1b4d15d434144862a5505bd33f0a;hp=4f18f9f098d4f915875d4c56d69e0adc440e86be;hpb=dfa5facee2cc3dd4d66f2397911526770df7cb22;p=gapil.git diff --git a/socket.tex b/socket.tex index 4f18f9f..ecf1a9e 100644 --- a/socket.tex +++ b/socket.tex @@ -75,14 +75,13 @@ dei file che contiene i puntatori alle opportune strutture usate dal kernel ed allocate per ogni processo, (la stessa usata per i files e le pipes [NdA verificare!]). -Il prototipo della funzione è definito nell'header \texttt{sys/socket.h}, la -funzione prende tre parametri, il dominio del socket (che definisce la +La funzione prende tre parametri, il dominio del socket (che definisce la famiglia di protocolli, vedi \secref{sec:sock_domain}), il tipo di socket (che definisce lo stile di comunicazione vedi \secref{sec:sock_type}) e il protocollo; in genere quest'ultimo è indicato implicitamente dal tipo di socket, per cui viene messo a zero (con l'eccezione dei \textit{raw socket}). -\begin{prototype}{int socket(int domain, int type, int protocol)} +\begin{prototype}{sys/socket.h}{int socket(int domain, int type, int protocol)} La funzione restituisce un intero positivo se riesce, e -1 se fallisce, in quest'ultimo caso la variabile \texttt{errno} è settata con i seguenti @@ -534,24 +533,27 @@ esempio nel caso dell'intero a 16 bit ci si ritrover suddiviso scambiati di posto, e ne sarà quindi invertito l'ordine di lettura per cui, per riavere il valore originale dovrenno essere rovesciati. -Per questo motivo si usano le seguenti funzioni di conversione (i cui -prototipi sono definiti in \texttt{netinet/in.h}) 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:{ -\begin{prototype}{unsigned long int htonl(unsigned long int hostlong)} +Per questo motivo si usano le seguenti 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: +\begin{prototype}{netinet/in.h} +{unsigned long int htonl(unsigned long int hostlong)} Converte l'intero a 32 bit \texttt{hostlong} dal formato della macchina a quello della rete. \end{prototype} -\begin{prototype}{unsigned sort int htons(unsigned short int hostshort)} +\begin{prototype}{netinet/in.h} +{unsigned sort int htons(unsigned short int hostshort)} Converte l'intero a 16 bit \texttt{hostshort} dal formato della macchina a quello della rete. \end{prototype} -\begin{prototype}{unsigned long int ntonl(unsigned long int netlong)} +\begin{prototype}{netinet/in.h} +{unsigned long int ntonl(unsigned long int netlong)} Converte l'intero a 32 bit \texttt{netlong} dal formato della rete a quello della macchina. \end{prototype} -\begin{prototype}{unsigned sort int ntons(unsigned short int netshort)} +\begin{prototype}{netinet/in.h} +{unsigned sort int ntons(unsigned short int netshort)} Converte l'intero a 16 bit \texttt{netshort} dal formato della rete a quello della macchina. \end{prototype} @@ -571,10 +573,9 @@ codice su tutte le architetture. \texttt{inet\_ntoa}} \label{sec:sock_func_ipv4} -Un secondo insieme di funzioni di manipolazione (i cui prototipi sono definiti -in \texttt{arpa/inet.h}) serve per passare dal formato binario usato nelle -strutture degli indirizzi alla rappresentazione dei numeri IP che si usa -normalente. +Un secondo insieme di funzioni di manipolazione serve per passare dal formato +binario usato nelle strutture degli indirizzi alla rappresentazione dei numeri +IP che si usa normalente. Le prime tre funzioni di manipolazione riguardano la conversione degli indirizzi IPv4 da una stringa in cui il numero di IP è espresso secondo la @@ -582,15 +583,16 @@ cosiddetta notazione \textit{dotted-decimal}, (cio \texttt{192.160.0.1}) al formato binario (direttamente in \textit{network order}) e viceversa; in questo caso si usa la lettera $a$ come mnemonico per indicare la stringa. Dette funzioni sono: -\begin{prototype}{int inet\_aton(const char *src, struct in\_addr *dest)} - Converte la stringa puntata da \texttt{src} nell'indirizzo binario da - memorizzare all'indirizzo puntato da \texttt{dest}, restituendo 0 in caso - di successo e 1 in caso di fallimento (è espressa in questa forma in modo da - poterla usare direttamente con il puntatore usato per passare la struttura - degli indirizzi). Se usata con \texttt{dest} inizializzato a - \texttt{NULL} effettua la validazione dell'indirizzo. -\end{prototype} -\begin{prototype}{in\_addr\_t inet\_addr(const char *strptr)} +\begin{prototype}{arpa/inet.h} + {int inet\_aton(const char *src, struct in\_addr *dest)} Converte la stringa + puntata da \texttt{src} nell'indirizzo binario da memorizzare all'indirizzo + puntato da \texttt{dest}, restituendo 0 in caso di successo e 1 in caso di + fallimento (è espressa in questa forma in modo da poterla usare direttamente + con il puntatore usato per passare la struttura degli indirizzi). Se usata + con \texttt{dest} inizializzato a \texttt{NULL} effettua la validazione + dell'indirizzo. +\end{prototype} +\begin{prototype}{arpa/inet.h}{in\_addr\_t inet\_addr(const char *strptr)} Restituisce l'indirizzo a 32 bit in network order a partire dalla stringa passata come parametro, in caso di errore restituisce il valore \texttt{INADDR\_NONE} che tipicamente sono trentadue bit a uno; questo @@ -598,7 +600,7 @@ indicare la stringa. Dette funzioni sono: valido, non può essere usata con questa funzione; per questo motivo essa è generalmente deprecata in favore della precedente. \end{prototype} -\begin{prototype}{char *inet\_ntoa(struct in\_addr addrptr)} +\begin{prototype}{arpa/inet.h}{char *inet\_ntoa(struct in\_addr addrptr)} Converte il valore a 32 bit dell'indirizzo (espresso in network order) restituendo il puntatore alla stringa che contiene l'espressione in formato dotted decimal. Si deve tenere presente che la stringa risiede in memoria