sample code ¶
~cpp /** request domain name thru ip address from DNS server eternalbleu 2006 03 23 **/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <arpa/inet.h> #include <netdb.h> #include <unistd.h> void error_handling(const char* message); int main(int argc, char ** argv) { struct hostent* host; struct sockaddr_in addr; int i; 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("Officially name : %s \n\n", host->h_name); puts("Aliases ------"); for(i=0; host->h_aliases[i]; i++) { puts(host->h_aliases[i]); } printf("Address Type:$s\n", host->h_addrtype == AF_INET? "AF_INET":"AF_INET6"); puts("IP Address ------"); for(i=0; host->h_addr_list[i]; i++) { puts(inet_ntoa( *(struct in_addr*)host->h_addr_list[i])); } return 0; } void error_handling(const char* message) { fputs(message, stderr); fputc('\n', stderr); exit(1); }
표준 BSD socket 을 이용한 소스. 리눅스에서 컴파일해야함. 대충 바꾸면 윈도우에서도 할 수 잇음.