#include <netdb.h> struct hostent *gethostbyname(const char *name);Na podstawie parametru name, który może być zarówno zapisany w postaci adresu IP, jak i nazwy domenowej funkcja zwraca stukturę:
struct hostent {
char *h_name; /* oficjalna nazwa hosta */
char **h_aliases; /* nazwy alternatywne */
int h_addrtype; /* domena adresowa */
int h_length; /* długość adresu */
char **h_addr_list; /* lista adresów */
}
#define h_addr h_addr_list[0] /* pierwszy z adresów */
struct hostent *gethostbyaddr(const char *addr, int len, int type);
Powyższa funkcja zwraca także strukturę hostent ale tym razem w inny sposób
podajemy adres do szukania. Argument addr jest bowiem wskaźnikiem do zmiennej
typu unsigned long int. Doprawdy niełatwo na to wpaść patrząc tylko na
prototyp ... Argument len to długość adresu, a type to domena adresowa. Przyda
się przykład:
struct sockaddr_in saddr; struct hostent *hent; hent = getsockbyaddr((char *)&saddr.sin_addr.s_addr, sizeof(__u32), PF_INET);Pora na dwie ostatnie funkcje z tej grupy:
void sethostent(int stayopen); void endhostent(void);Pierwsza z nich wywołana z parametrem stayopen równym 1 powoduje, że zapytania do serwera DNS będą się odbywały za pomocą stałego połączenia TCP. W przeciwnym wypadku będą używane datagramy UDP.