From: Simone Piccardi Date: Mon, 8 Nov 2004 21:49:39 +0000 (+0000) Subject: Spostamento di myhost.c in mygethost.c X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=87b2f3c30bfb48b0ea80d6b921960536e97ba0d7 Spostamento di myhost.c in mygethost.c --- diff --git a/img/addrinfo_list.dia b/img/addrinfo_list.dia index a399fb2..fca8a26 100644 Binary files a/img/addrinfo_list.dia and b/img/addrinfo_list.dia differ diff --git a/sockctrl.tex b/sockctrl.tex index a6eabcd..07f3e18 100644 --- a/sockctrl.tex +++ b/sockctrl.tex @@ -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 diff --git a/sources/myhost.c b/sources/myhost.c index eeb2e69..76cf844 100644 --- a/sources/myhost.c +++ b/sources/myhost.c @@ -1,4 +1,4 @@ -/* myhost.c +/* mygethost.c * * Copyright (C) 2004 Simone Piccardi * @@ -18,11 +18,11 @@ */ /***************************************************************************** * - * 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 @@ -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); }