X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=socket.tex;h=619c1dd15ad0f29ef7684673bbcd254af4068ca0;hp=ec886642980345b4071c4e98372e551ebd017aa7;hb=7090500d79c488db306ed0c065b90bb0c0505430;hpb=0c7fb286c2c1b480ed81f7ce8d506b179e5d291e diff --git a/socket.tex b/socket.tex index ec88664..619c1dd 100644 --- a/socket.tex +++ b/socket.tex @@ -8,7 +8,7 @@ operativi. Dopo una breve panoramica sulle caratteristiche di questa interfaccia vedremo come creare un socket e come collegarlo allo specifico protocollo di rete che -utilizzerà per la comunicazione. Per evitare una introduzione puramente teorica +utilizzerà per la comunicazione. Per evitare un'introduzione puramente teorica concluderemo il capitolo con un primo esempio di applicazione. \section{Una panoramica} @@ -22,9 +22,9 @@ con essi. \label{sec:sock_socket_def} Il \textit{socket}\footnote{una traduzione letterale potrebbe essere - \textsl{manicotto}, ma essendo universalmente noti come socket utilizzeremo - sempre la parola inglese} è uno dei principali meccanismi di comunicazione -fra programmi utilizzato in ambito unix. Il socket costituisce in sostanza un + \textsl{presa}, ma essendo universalmente noti come socket utilizzeremo + sempre la parola inglese.} è uno dei principali meccanismi di comunicazione +fra programmi utilizzato in ambito Unix. Il socket costituisce in sostanza un canale di comunicazione fra due processi su cui si possono leggere e scrivere dati analogo a quello di una pipe ma a differenza di questa e degli altri meccanismi esaminati nel capitolo \capref{cha:IPC} i socket non sono limitati @@ -331,8 +331,9 @@ definiti; la struttura \centering \begin{tabular}{|l|l|l|} \hline - \multicolumn{1}{|c|}{Tipo}& \multicolumn{1}{|c|}{Descrizione}& - \multicolumn{1}{|c|}{Header} \\ + \multicolumn{1}{|c|}{\textbf{Tipo}}& + \multicolumn{1}{|c|}{\textbf{Descrizione}}& + \multicolumn{1}{|c|}{\textbf{Header}} \\ \hline \hline \type{int8\_t} & intero a 8 bit con segno & \file{sys/types.h}\\ @@ -429,7 +430,7 @@ problema e le relative soluzioni). \subsection{La struttura degli indirizzi IPv6} \label{sec:sock_sa_ipv6} -Essendo IPv6 una estensione di IPv4 i socket di tipo \macro{PF\_INET6} sono +Essendo IPv6 un'estensione di IPv4 i socket di tipo \macro{PF\_INET6} sono sostanzialmente identici ai precedenti; la parte in cui si trovano praticamente tutte le differenze è quella della struttura degli indirizzi. La struttura degli indirizzi è definita ancora in \file{netinet/in.h}. @@ -601,11 +602,12 @@ funzioni sono: Converte l'intero a 16 bit \var{netshort} dal formato della rete a quello della macchina. \end{prototype} -I nomi sono assegnati usando la lettera \func{n} come mnemonico per indicare +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 -\func{h} come mnemonico per l'ordinamento usato sulla macchina locale (da -\textit{host order}), mentre le lettere \func{s} e \func{l} stanno ad indicare -i tipi di dato (\type{long} o \type{short}, riportati anche dai prototipi). +\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 +prototipi). Usando queste funzioni si ha la conversione automatica: nel caso in cui la macchina che si sta usando abbia una architettura \textit{big endian} queste @@ -626,7 +628,7 @@ Le prime tre funzioni di manipolazione riguardano la conversione degli indirizzi IPv4 da una stringa in cui il numero di IP è espresso secondo la cosiddetta notazione \textit{dotted-decimal}, (cioè nella forma \texttt{192.160.0.1}) al formato binario (direttamente in \textit{network - order}) e viceversa; in questo caso si usa la lettera \func{a} come + order}) e viceversa; in questo caso si usa la lettera \texttt{a} come mnemonico per indicare la stringa. Dette funzioni sono: \begin{prototype}{arpa/inet.h} {int inet\_aton(const char *src, struct in\_addr *dest)} @@ -659,9 +661,9 @@ mnemonico per indicare la stringa. Dette funzioni sono: Le tre funzioni precedenti sono limitate solo ad indirizzi IPv4, per questo motivo è preferibile usare le due nuove funzioni \func{inet\_pton} e \func{inet\_ntop} che possono convertire anche gli indirizzi IPv6. Anche in -questo caso le lettere \func{n} e \func{p} sono degli mnemonici per ricordare -il tipo di conversione effettuata e stanno per \textit{presentation} e -\textit{numeric}. +questo caso le lettere \texttt{n} e \texttt{p} sono degli mnemonici per +ricordare il tipo di conversione effettuata e stanno per \textit{presentation} +e \textit{numeric}. % \begin{figure}[htb] % \centering @@ -910,7 +912,7 @@ Il primo passo (\texttt{\small 14--18}) socket in tutte le chiamate successive. Nel caso la chiamata fallisca si stampa un errore con la relativa routine e si esce. -Il passo seguente (\texttt{\small 19--27}) è quello di costruire una apposita +Il passo seguente (\texttt{\small 19--27}) è quello di costruire un'apposita struttura \type{sockaddr\_in} in cui sarà inserito l'indirizzo del server ed il numero della porta del servizio. Il primo passo è inizializzare tutto a zero, per poi inserire il tipo di protocollo e la porta (usando per @@ -1067,3 +1069,8 @@ scritto per essere lanciato da linea di comando, se lo si volesse utilizzare come demone di sistema (che è in esecuzione anche quando non c'è nessuna shell attiva e il terminale da cui lo si è lanciato è stato sconnesso), occorrerebbero delle opportune modifiche. + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "gapil" +%%% End: