X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=socket.tex;h=11e19a69350505a74075a3e17790b834593d300e;hp=619c1dd15ad0f29ef7684673bbcd254af4068ca0;hb=247c7ba624f39b283f9e85816c0616348f39c1b6;hpb=7090500d79c488db306ed0c065b90bb0c0505430 diff --git a/socket.tex b/socket.tex index 619c1dd..11e19a6 100644 --- a/socket.tex +++ b/socket.tex @@ -115,7 +115,7 @@ socket, per cui viene messo a zero (con l'eccezione dei \textit{raw socket}). Apre un socket. \bodydesc{La funzione restituisce un intero positivo se riesce, e -1 se - fallisce, in quest'ultimo caso la variabile \var{errno} è settata con i + fallisce, in quest'ultimo caso la variabile \var{errno} è impostata con i seguenti codici di errore: \begin{errlist} @@ -203,7 +203,7 @@ comunicazione, questo infatti viene a dipendere dal protocollo che si andr utilizzare fra quelli disponibili nella famiglia scelta. Le API permettono di scegliere lo stile di comunicazione indicando il tipo di socket; Linux e le glibc mettono a disposizione i seguenti tipi di socket (che il manuale della -glibc chiama \textit{styles}) definiti come \type{int} in \file{socket.h}: +glibc chiama \textit{styles}) definiti come \ctyp{int} in \file{socket.h}: \begin{list}{}{} \item \macro{SOCK\_STREAM} Provvede un canale di trasmissione dati @@ -300,7 +300,7 @@ attraverso puntatori (cio maneggiare puntatori a strutture relative a tutti gli indirizzi possibili nelle varie famiglie di protocolli; questo pone il problema di come passare questi puntatori, il C ANSI risolve questo problema coi i puntatori generici -(i \type{void *}), ma l'interfaccia dei socket è antecedente alla +(i \ctyp{void *}), ma l'interfaccia dei socket è antecedente alla definizione dello standard ANSI, e per questo nel 1982 fu scelto di definire una struttura generica \type{sockaddr} per gli indirizzi dei socket mostrata in \nfig: @@ -345,12 +345,12 @@ definiti; la struttura \hline \type{sa\_family\_t} & famiglia degli indirizzi& \file{sys/socket.h}\\ \type{socklen\_t} & lunghezza (\type{uint32\_t}) dell'indirizzo di - un socket& \type{sys/socket.h}\\ + un socket& \file{sys/socket.h}\\ \hline - \type{in\_addr\_t} & indirizzo IPv4 (\file{uint32\_t}) & - \type{netinet/in.h}\\ - \type{in\_port\_t} & porta TCP o UDP (\file{uint16\_t})& - \type{netinet/in.h}\\ + \type{in\_addr\_t} & indirizzo IPv4 (\type{uint32\_t}) & + \file{netinet/in.h}\\ + \type{in\_port\_t} & porta TCP o UDP (\type{uint16\_t})& + \file{netinet/in.h}\\ \hline \end{tabular} \caption{Tipi di dati usati nelle strutture degli indirizzi, secondo quanto @@ -362,13 +362,13 @@ In alcuni sistemi la struttura aggiuntivo \var{uint8\_t sin\_len} (come riportato da R. Stevens nei suoi libri). Questo campo non verrebbe usato direttamente dal programmatore e non è richiesto dallo standard POSIX.1g, in Linux pertanto non esiste. Il campo -\type{sa\_family\_t} era storicamente un \type{unsigned short}. +\type{sa\_family\_t} era storicamente un \ctyp{unsigned short}. Dal punto di vista del programmatore l'unico uso di questa struttura è quello di fare da riferimento per il casting, per il kernel le cose sono un po' diverse, in quanto esso usa il puntatore per recuperare il campo \var{sa\_family} con cui determinare il tipo di indirizzo; per questo -motivo, anche se l'uso di un puntatore \type{void *} sarebbe più immediato +motivo, anche se l'uso di un puntatore \ctyp{void *} sarebbe più immediato per l'utente (che non dovrebbe più eseguire il casting), è stato mantenuto l'uso di questa struttura. @@ -405,9 +405,9 @@ internet di un'interfaccia pi prevede numeri di porta, che sono utilizzati solo dai protocolli di livello superiore come TCP e UDP. Questa struttura però viene usata anche per i socket RAW che accedono direttamente al livello di IP, nel qual caso il numero della -porta viene settato al numero di protocollo. +porta viene impostato al numero di protocollo. -Il membro \var{sin\_family} deve essere sempre settato; \var{sin\_port} +Il membro \var{sin\_family} deve essere sempre impostato; \var{sin\_port} specifica il numero di porta (vedi \secref{sec:TCPel_port_num}; i numeri di porta sotto il 1024 sono chiamati \textsl{riservati} in quanto utilizzati da servizi standard. Soltanto processi con i privilegi di root (effective uid @@ -455,7 +455,7 @@ struct in6_addr { \label{fig:sock_sa_ipv6_struct} \end{figure} -Il campo \var{sin6\_family} deve essere sempre settato ad +Il campo \var{sin6\_family} deve essere sempre impostato ad \macro{AF\_INET6}, il campo \var{sin6\_port} è analogo a quello di IPv4 e segue le stesse regole; il campo \var{sin6\_flowinfo} è a sua volta diviso in tre parti di cui i 24 bit inferiori indicano l'etichetta di flusso, i @@ -606,7 +606,7 @@ I nomi sono assegnati usando la lettera \texttt{n} come mnemonico per indicare l'ordinamento usato sulla rete (da \textit{network order}) e la lettera \texttt{h} come mnemonico per l'ordinamento usato sulla macchina locale (da \textit{host order}), mentre le lettere \texttt{s} e \texttt{l} stanno ad -indicare i tipi di dato (\type{long} o \type{short}, riportati anche dai +indicare i tipi di dato (\ctyp{long} o \ctyp{short}, riportati anche dai prototipi). Usando queste funzioni si ha la conversione automatica: nel caso in cui la @@ -676,7 +676,7 @@ e \textit{numeric}. Entrambe le funzioni accettano l'argomento \param{af} che indica il tipo di indirizzo e può essere \macro{AF\_INET} o \macro{AF\_INET6}. Se la famiglia -indicata non è valida entrambe le funzioni settano la variabile \var{errno} +indicata non è valida entrambe le funzioni impostano la variabile \var{errno} al valore \macro{EAFNOSUPPORT}. I prototipi delle suddette funzioni sono i seguenti: \begin{prototype}{sys/socket.h} @@ -698,7 +698,7 @@ seguenti: \bodydesc{La funzione restituisce un puntatore non nullo a \var{dest} in caso di successo e un puntatore nullo in caso di fallimento, in - quest'ultimo caso viene settata la variabile \var{errno} con il valore + quest'ultimo caso viene impostata la variabile \var{errno} con il valore \macro{ENOSPC} in caso le dimensioni dell'indirizzo eccedano la lunghezza specificata da \var{len} o \macro{ENOAFSUPPORT} in caso \var{af} non sia una famiglia di indirizzi valida.}