\label{tab:addrinfo_error_code}
\end{table}
+Come per i codici di errore di \func{gethostbyname} anche in questo caso è
+fornita una apposita funzione, analoga di \func{strerror}, che consente di
+utilizzarli direttamente per stampare a video un messaggio esplicativo; la
+funzione è \func{gai\_strerror} ed il suo prototipo è:
+\begin{functions}
+ \headdecl{netdb.h}
+
+ \funcdecl{const char *gai\_strerror(int errcode)}
+
+ Fornisce il messaggio corrispondente ad un errore di \func{getaddrinfo}.
+
+ \bodydesc{La funzione restituisce il puntatore alla stringa contenente il
+ messaggio di errore.}
+\end{functions}
-Dato che più di un indirizzo possono corrispondere ad un certo nome a dominio,
-e più di un servizio possono essere associati ad un certo nome (in genere su
-due protocolli diversi) è assolutamente normale ricevere come risposta una
-lista di più strutture \struct{addrinfo}, a meno di non avere usato una
-selezione specifica. Ad esempio se si richiede la risoluzione del servizio
-\textit{echo} si avrà come risposta la lista illustrata in
-fig.~\ref{fig:sock_addrinfo_list}.
+La funzione restituisce un puntatore alla stringa contenente il messaggio
+corrispondente dal codice di errore \param{errcode} ottenuto come valore di
+ritorno di \func{getaddrinfo}. La stringa è allocata staticamente, ma essendo
+costante, ed accessibile in sola lettura, questo non comporta nessun problema
+di rientranza della funzione.
+
+Dato che ad un certo nome a dominio possono corrispondere più indirizzi IP
+(sia IPv4 che IPv6), e che un certo servizio può essere fornito su protocolli
+e tipi di socket diversi, in generale, a meno di non aver eseguito una
+selezione specifica attraverso l'uso di \param{hints}, si otterrà una diversa
+struttura \struct{addrinfo} per ciascuna possibilità. Ad esempio se si
+richiede la risoluzione del servizio \textit{echo} si avrà come risposta la
+lista illustrata in fig.~\ref{fig:sock_addrinfo_list}.
\begin{figure}[!htb]
\centering
-/* myhost.c
+/* mygethost.c
*
* Copyright (C) 2004 Simone Piccardi
*
*/
/*****************************************************************************
*
- * File myhost.c: An example host command
+ * File mygethost.c: An example host command
*
* Author: S. Piccardi Jul. 2004
*
- * $Id: myhost.c,v 1.1 2004/07/03 22:53:13 piccardi Exp $
+ * $Id$
*
*****************************************************************************/
#include <netdb.h>
* routine to print usage info and exit
*/
void usage(void) {
- printf("Program myhost: do an hostname resolution \n");
+ printf("Program mygethost: do an hostname resolution \n");
printf("Usage:\n");
- printf(" myhost [-h] hostname \n");
- printf(" -h print this help\n");
+ printf(" mygethost [-h] hostname \n");
+ printf(" -h print this help\n");
exit(1);
}