I am using this piece of code that I found at http://www.kutukupret.com/2009/09/28/gethostbyname-vs-getaddrinfo/ to do a dns search
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main(int argc, char *argv[ ]) { struct hostent *h; /* error check the command line */ if(argc != 2) { fprintf(stderr, "Usage: %s hostname\n", argv[0]); exit(1); } /* get the host info */ if((h=gethostbyname(argv[1])) == NULL) { herror("gethostbyname(): "); exit(1); } else printf("Hostname: %s\n", h->h_name); printf("IP Address: %s\n", inet_ntoa(*((struct in_addr *)h->h_addr))); return 0; }
I came across a strange fact
./test www.google.com Hostname: www.l.google.com IP Address: 209.85.148.103
works fine, but if I try to resolve an incomplete IP address, I get this
./test 10.1.1 Hostname: 10.1.1 IP Address: 10.1.0.1
I would expect an error like the following
./test www.google gethostbyname(): : Unknown host
but the program seems to work.
Any idea why?
Ottavio campana
source share