Spostamento di myhost.c in mygethost.c
authorSimone Piccardi <piccardi@gnulinux.it>
Mon, 8 Nov 2004 21:49:39 +0000 (21:49 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Mon, 8 Nov 2004 21:49:39 +0000 (21:49 +0000)
img/addrinfo_list.dia
sockctrl.tex
sources/myhost.c

index a399fb22e337633c7822518313e1cabfd376603c..fca8a26f1f9cda90d76fba754e0aaa10df0d7404 100644 (file)
Binary files a/img/addrinfo_list.dia and b/img/addrinfo_list.dia differ
index a6eabcd8cbecd2a044d681b8967645505480269d..07f3e18c1f12044b62c1f2db7f8e1b72a100c9a9 100644 (file)
@@ -1419,14 +1419,34 @@ corrispondente 
   \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
index eeb2e6925ca6d1f50e1e98011494c6c70cd9e1ce..76cf84477eb5edd568c52c40bf3d6199b30dfb1a 100644 (file)
@@ -1,4 +1,4 @@
-/* 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>
@@ -117,9 +117,9 @@ int main(int argc, char *argv[])
  * 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);
 }