X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=othersock.tex;h=146e784fb61546c294e91a4fbe047839c0b3762e;hp=439ccefcd55d92a940a308f87bc8464761b8806a;hb=5d621249af8897e27fc0a842a33e7a7ef3b9c2ca;hpb=cebc759ef695405a69328538834883d9d470b06e diff --git a/othersock.tex b/othersock.tex index 439ccef..146e784 100644 --- a/othersock.tex +++ b/othersock.tex @@ -1,6 +1,6 @@ %% othersock.tex %% -%% Copyright (C) 2004-2006 Simone Piccardi. Permission is granted to +%% Copyright (C) 2004-2010 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 "Un preambolo", @@ -8,12 +8,13 @@ %% license is included in the section entitled "GNU Free Documentation %% License". %% + \chapter{Gli altri tipi di socket} \label{cha:other_socket} -Dopo aver trattato in cap.~\ref{cha:TCP_socket} i socket TCP, che costituiscono -l'esempio più comune dell'interfaccia dei socket, esamineremo in questo -capitolo gli altri tipi di socket, a partire dai socket UDP, e i socket +Dopo aver trattato in cap.~\ref{cha:TCP_socket} i socket TCP, che +costituiscono l'esempio più comune dell'interfaccia dei socket, esamineremo in +questo capitolo gli altri tipi di socket, a partire dai socket UDP, e i socket \textit{Unix domain} già incontrati in sez.~\ref{sec:ipc_socketpair}. @@ -54,7 +55,7 @@ utilizzando per il tipo di socket il valore \const{SOCK\_DGRAM}. Questa differenza comporta ovviamente che anche le modalità con cui si usano i socket UDP sono completamente diverse rispetto ai socket TCP, ed in particolare non esistendo il concetto di connessione non esiste il meccanismo -del \itindex{three~way~handshake}\textit{three way handshake} né quello degli +del \itindex{three~way~handshake} \textit{three way handshake} né quello degli stati del protocollo. In realtà tutto quello che avviene nella comunicazione attraverso dei socket UDP è la trasmissione di un pacchetto da un client ad un server o viceversa, secondo lo schema illustrato in @@ -263,10 +264,21 @@ comunque il numero di byte letti. I due argomenti \param{from} e \param{fromlen} sono utilizzati per ottenere l'indirizzo del mittente del pacchetto che è stato ricevuto, e devono essere -opportunamente inizializzati con i puntatori alle variabili dove la struttura -contenente quest'ultimo e la relativa lunghezza saranno scritti (si noti che -\param{fromlen} è un valore intero ottenuto come -\itindex{value~result~argument}\textit{value result argument}). Se non si è +opportunamente inizializzati; il primo deve contenere il puntatore alla +struttura (di tipo \ctyp{sockaddr}) che conterrà l'indirizzo e il secondo il +puntatore alla variabile con la dimensione di detta struttura. Si tenga +presente che mentre il contenuto della struttura \ctyp{sockaddr} cui punta +\param{from} può essere qualunque, la variabile puntata da \param{fromlen} +deve essere opportunamente inizializzata a \code{sizeof(sockaddr)}, +assicurandosi che la dimensione sia sufficiente a contenere tutti i dati +dell'indirizzo.\footnote{si ricordi che \ctyp{sockaddr} è un tipo generico che + serve ad indicare la struttura corrispondente allo specifico tipo di + indirizzo richiesto, il valore di \param{fromlen} pone un limite alla + quantità di dati che verranno scritti sulla struttura puntata da + \param{from} e se è insufficiente l'indirizzo risulterà corrotto.} Al +ritorno della funzione si otterranno i dati dell'indirizzo e la sua effettiva +lunghezza, (si noti che \param{fromlen} è un valore intero ottenuto come +\itindex{value~result~argument} \textit{value result argument}). Se non si è interessati a questa informazione, entrambi gli argomenti devono essere inizializzati al valore \const{NULL}. @@ -784,14 +796,12 @@ stack dei protocolli. \label{sec:packet_socket} +% articoli interessanti: +% http://www.linuxjournal.com/article/5617 +% http://www.linuxjournal.com/article/4659 +% - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "gapil" -%%% End: - % LocalWords: socket cap TCP UDP domain sez NFS DNS stream datagram PF INET to % LocalWords: IPv tab SOCK DGRAM three way handshake client fig bind listen AF % LocalWords: accept recvfrom sendto connect netstat named DHCP kernel ICMP CR @@ -803,4 +813,11 @@ stack dei protocolli. % LocalWords: ECONNREFUSED value result argument close shutdown daytime nell' % LocalWords: memset inet pton nread NUL superdemone inetd sniffer daytimed % LocalWords: INADDR ANY addr echo ClientEcho sendbuff serv VPN tcpdump l'I -% LocalWords: Stevens destination descriptor raw stack netlink +% LocalWords: Stevens destination descriptor raw stack netlink packet + + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "gapil" +%%% End: