/************************************************ Written by NAKAMURA Minoru, 2004.05.11 ************************************************/ #include #include #include #include #include #include #include #define BUFFER_SIZE 1024 static char buffer[BUFFER_SIZE]; int main(int argc, char** argv) { while (fgets(buffer, BUFFER_SIZE, stdin) != NULL) { struct in_addr ipnum ; for (char* p = buffer; *p ; p++) { if (!isdigit(*p) && *p != '.'){ *p = '\0'; break; } } struct timeval start_time, end_time; ipnum.s_addr = inet_addr(buffer); if (gettimeofday(&start_time, 0) != 0){ continue; } struct hostent* result = gethostbyaddr((char*)&ipnum, sizeof(struct in_addr), AF_INET); if (gettimeofday(&end_time, 0) != 0){ continue; } int sec = 0; int msec = 0; if (end_time.tv_usec > start_time.tv_usec) { sec = end_time.tv_sec - start_time.tv_sec; msec = end_time.tv_usec - start_time.tv_usec; } else { sec = end_time.tv_sec - start_time.tv_sec - 1; msec = 1000000 + end_time.tv_usec - start_time.tv_usec; } if (result != NULL) { fprintf(stdout, "SUCCESS %d.%06d\n", sec, msec); fflush(stdout); } else { fprintf(stdout, "FAILURE %d.%06d\n", sec, msec); fflush(stdout); } } return 0; }