【发布时间】:2019-09-11 06:16:46
【问题描述】:
我试图弄清楚如何计算 C99 中一些套接字编程连接之间的毫秒数,但在 C99 上得到 0 ms 并在 mac 终端上返回一个实际值。我在我的代码中包含了时间部分。
初始化:
struct timeval start,end;
double t1,t2;
t1 = 0.0;
t2 = 0.0;
开始运作:
t1+=start.tv_sec+(start.tv_usec/1000000.0);
操作结束:
t2+=end.tv_sec+(end.tv_usec/1000000.0);
然后以毫秒为单位打印实际时间:
printf("Sent........RTT = %g ms\n",(t2-t1)/100);
【问题讨论】:
-
我会担心潜在的大 tv_sec 值会导致毫秒值精度的巨大损失。我会先减去两个第二个值。或者使用非常大的整数以毫秒为单位保存所有内容。
-
您能详细说明一下吗?我不完全理解你
-
“c99”是什么意思? Linux?视窗?还有什么?
-
C99 是 1999 版 C 的编译器。如果启用它,我认为它存在于哪个系统上并不重要。如果我错了,请纠正我。 @rici
-
你用来获取时间的函数是 Posix,不是任何 C 标准的一部分,它的实现(和精度)取决于操作系统,而不是编译器。