X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=sockctrl.tex;h=b4b229e3d36a761ba65ff961c6327b5a0c24f1ab;hp=62fd3d7037692a521a027423fa3d9f40f293cf9a;hb=88d8a251947f948094d35de596feaf49e975f91b;hpb=764759ec56ded5724b5d96288dc8f31369ac0ce8 diff --git a/sockctrl.tex b/sockctrl.tex index 62fd3d7..b4b229e 100644 --- a/sockctrl.tex +++ b/sockctrl.tex @@ -1538,7 +1538,7 @@ nello stesso ordine in cui vengono inviati dal server DNS. In particolare nulla garantisce che vengano forniti prima i dati relativi ai servizi di un determinato protocollo o tipo di socket, se ne sono presenti di diversi. Se allora utilizziamo il nostro programma potremo verificare il risultato: -\begin{verbatim} +\begin{Verbatim} [piccardi@gont sources]$ ./mygetaddr -c gapil.truelite.it echo Canonical name sources2.truelite.it IPv4 address: @@ -1549,7 +1549,7 @@ IPv4 address: Indirizzo 62.48.34.25 Protocollo 17 Porta 7 -\end{verbatim} +\end{Verbatim} %$ Una volta estratti i risultati dalla \textit{linked list} puntata da @@ -1650,14 +1650,25 @@ indirizzi indicati dagli argomenti \param{host} e \param{serv} come stringhe terminate dal carattere NUL, a meno che queste non debbano essere troncate qualora la loro dimensione ecceda quelle specificate dagli argomenti \param{hostlen} e \param{servlen}. Sono comunque definite le due costanti -\const{NI\_MAXHOST} e \const{NI\_MAXSERV}\footnote{le due costanti sono - definite in \file{netdb.h} ed hanno rispettivamente il valore 1024 e 12.} -che possono essere utilizzate come limiti massimi. In caso di errore viene -restituito invece un codice che assume gli stessi valori illustrati in +\const{NI\_MAXHOST} e \const{NI\_MAXSERV}\footnote{in Linux le due costanti + sono definite in \file{netdb.h} ed hanno rispettivamente il valore 1024 e + 12.} che possono essere utilizzate come limiti massimi. In caso di errore +viene restituito invece un codice che assume gli stessi valori illustrati in tab.~\ref{tab:addrinfo_error_code}. A questo punto possiamo fornire degli esempi di utilizzo diretto della nuova -interfaccia, adottandola per rendere i nostri client +interfaccia, adottandola per le precedenti implementazioni del client e del +server per il servizio \textit{echo}; dato che l'uso delle funzioni (in +particolare di \func{getaddrinfo} è piuttosto complesso, prevedendo una +impostazione manuale dell'argomento \param{hints}, provvederemo una +interfaccia semplificata per i due casi visti finora, quello in cui si +specifica nel client un indirizzo remoto per la connessione al server, e +quello in cui si specifica nel server un indirizzo locale su cui porsi in +ascolto. + +La prima funzione è allora \func{sockconn}, che richiede la risoluzione di un +indirizzo e di un servizio per connettere un socket allo stesso. + \section{Le opzioni dei socket}