/* Call ping to get the round trip time */ #include "smrt.h" #include #include #include #include #include #include /***** FUNCTION PROTOTYPES *****/ FILE *OpenFile1(char *fname, char *access_mode); /***** PROGRAM's MAIN DRIVER *****/ void PingCall(char *listFileName) { FILE *OUTFILE; FILE *Ifile; FILE *RFile; char sitename[100]; char Ln[300]; char PingInstruction[200]; char *sites[100]; float band[100]; float TripTime[100]; float min=0,average=0,max=0; float bandwidth; // available bandwidth float times; // round trip time int sitenum=0; int i=0; Ifile = OpenFile1(listFileName, "r"); while (fscanf(Ifile,"%s %f %f\n",sitename,&bandwidth,×) != EOF) { //printf("%s\n",sitename); strcpy(PingInstruction,""); strcat(PingInstruction,"ping -c 5 "); strcat(PingInstruction,sitename); strcat(PingInstruction," > ping.txt"); sites[sitenum]= malloc(strlen(sitename)+1); strcpy(sites[sitenum],sitename); band[sitenum] = bandwidth; TripTime[sitenum] = times; //printf("%s\n",PingInstruction); system(PingInstruction); RFile = OpenFile1("ping.txt", "r"); // read the ping result file while (fgets(Ln,255,RFile) != EOF) { if (strstr(Ln,"packet loss") != NULL) { fscanf(RFile,"%*s %*s = %f/%f/%f ", &min, &average, &max); if (average < times) TripTime[sitenum] = average; break; } } // end of ping text file while sitenum++; fclose(RFile); } // end of siteList file while fclose(Ifile); OUTFILE = OpenFile1(listFileName, "w"); while (i