|
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <netdb.h> void error_handling(char *message);
int main(int argc, char *argv[]){ int i; struct hostent *host; struct sockaddr_in addr addr; if(argc!=2){ printf("Usage : %s <IP> \n", argv[0]); exit(1); }
memset(&addr, 0, sizeof(addr)); addr.sin_addr.s_addr=inet_addr(argv[1]);
host=gethostbyaddr((char*)&addr.sin_addr, 4, AF_INET); if(!host){ error_handling("gethost…error"); }
printf("Official name : %s \n", host->h_name); for(i=0; host->h_aliases[i]; i++) { printf("Aliases %d : %s \n", i+1, host->h_aliases[i]); } printf("Address type : %s \n", host->h_addrtype==AF_INET? "AF_INET" : "AF_INET6"); for(i=0; host->h_addr_list[i]; i++) { printf("IP addr %d : %s \n", i+1, inet_ntoa(*(struct in_addr*)host->h_addr_list[i])); } return 0; }
void error_handling(char *message){ fputs(message, stderr); fputc('\n', stderr); exit(1); } |