double avg_time_ms() const { return avg_time() * 1e3; }
int main(int argc, char **argv){ if(argc<2){ printf("Usage: ./trace domain \n for example: ./trace www.utdallas.edu\n"); exit(0); } char command[200]; strcpy(command, "traceroute "); strcat(command, argv[1]); strcat(command, " > output.txt"); system(command); FILE * fp; char * line = NULL; size_t len = 0; ssize_t read; char *token; char delimiter[5] = " (),"; char* strArray[12]; fp = fopen("output.txt", "r"); // open file if (fp == NULL) exit(EXIT_FAILURE); int line_number = 0; int currentLine = 0; int tokenNumber = 0; float time[3]; float min, max, avg; while ((read = getline(&line, &len, fp)) != -1) { //while line present do following printf("%s", line); tokenNumber = 0; token = strtok(line, delimiter); // token separated if(currentLine == 0) { //code for fist line while(token != NULL) { strArray[tokenNumber] = (char*)malloc(strlen(token) + 1); strcpy(strArray[tokenNumber], token); //token copy tokenNumber++; token = strtok(NULL, delimiter); } printf("DNS = %s\nIP = %s\n\n",strArray[2],strArray[3]); currentLine++; } else { //code for other lines while(token != NULL) { strArray[tokenNumber] = (char*)malloc(strlen(token) + 1); strcpy(strArray[tokenNumber], token); if(tokenNumber == 3) { time[0] = atof(strArray[tokenNumber]); //time token saved by converting it to float } if(tokenNumber == 5) { time[1] = strtod(strArray[tokenNumber],NULL); //time token saved by converting it to float } if(tokenNumber == 7) { time[2] = strtod(strArray[tokenNumber],NULL); //time token saved by converting it to float } tokenNumber++; token = strtok(NULL, delimiter); } min = min_time(time, 3); //find min max = max_time(time, 3); // find max avg = avg_time(time, 3); // find avg printf("DNS = %s\nIP = %s\n",strArray[1],strArray[2]); printf( "time 1 = %f, time 2 = %f, time 3 = %f\n",time[0], time[1], time[2]); printf( "min time = %f\nmax time = %f\navg time = %f\n\n",min, max, avg); } } fclose(fp); //close file printf(" ** end of mytrace program ** \n"); }