gethostbyaddr

Wie sieht's aus?

#include <netdb.h>

extern int h_errno;

struct hostent *gethostbyaddr(const char *addr, int len, int type);
    

Was tut's?

Als Gegenstück zu gethostbyname() ermittelt gethostbyaddr() den/die Hostnamen für eine gegebene IP-Adresse. Der Rückgabewert ist wieder ein Zeiger auf eine struct hostent{} wie bei gethostbyname() beschrieben, und NULL im Fehlerfall.

Was machen die Parameter?

Der erste Parameter ist ein Zeiger auf die Adresse, in Binärform. Dazu verwendet man am besten wieder eine struct in_addr, die man ggf. castet.

Der zweite Parameter enthält die Länge der Adresse, also sizeof(struct in_addr).

Der dritte Parameter ist in unserem Anwendungsfall AF_INET.

Wie verwende ich es?

struct in_addr addr;
struct hostent *host;

addr.s_addr = inet_addr("127.0.0.1");

host = gethostbyaddr((char*)&addr, sizeof(addr), AF_INET);
if (!host)
{
    herror("gethostbyaddr() failed");
    return 1;
}

printf("host->h_name = %s\n", host->h_name);