Measure Time in Milliseconds
最近被Computer and Communication Networks的一份功課虐待中……
話說這份功課其中一條是要在Linux systems中用C或C++寫一個socket program, 用來計算RTT的. 這個RTT是指由client side send一個packet到server side, 再由server side立即送回給client side所需的時間. 因為這個時間很短, 所以至少需要milliseconds…
其他的部分都不算難, 只是基本的setup socket, send & read之類的. 唯一問題是平時見的examples都是TCP的, 但這次用的卻是UDP…….雖然是沒甚麼大差異, 但還是要小心看清楚~
好, 完成後, 卻被時間虐待了……time.h內的time(), clock()甚麼的, 全都不管用!!因為只準確至秒……距離微秒還有一大段路!!
今天, 終於找到答案了……用到的是sys/time.h內的gettimeofdate().
- #include <unistd.h>
- #include <sys/time.h>
- /*
- struct timeval的defination: (已定義在sys/time.h)
- struct timeval {
- time_t tv_sec; //秒
- suseconds_t tv_usec; //毫秒
- }
- */
- int main() {
- struct timeval start, end; //用來記下開始 & 結束時間的
- long seconds, useconds, time_in_ms;
- gettimeofday(&start, NULL);
- gettimeofday(&end, NULL);
- seconds = end.tv_sec - starrt.tv_sec;
- useconds = end.tv_usec - start.tv_usec;
- time_in_ms = seconds * 1000 + useconds/1000.0;
- return 0;
- }








Recent Comments