gcc(GCC)4.6.1
我正在使用RTF 4566创建一些sdp,我想获得NTP时间戳,以便我可以将它用作会话ID。建议使用网络时间协议(NTP)格式时间戳来确保唯一性。
但是,是否有任何函数会返回ntp时间?
非常感谢任何建议,
答案 0 :(得分:3)
如果有人有兴趣,这就是我解决问题的方法。
/* Get the time in micro seconds to create an unique session id */
time_usec = apr_time_usec(apr_time_now());
apr_snprintf(session_id, MAX_STRING_LEN, "%lu", (unsigned long)time_usec);
希望这有助于某人,
答案 1 :(得分:2)
NTP时间戳包含一个32位宽的值,表示自1.1.1900以来的秒数,以及一个32位宽的值,为其添加值* 1 /(2 ^ 32)秒的小数部分。 1 /(2 ^ 32)秒的时间小于纳秒(精确到233皮秒)。
使用clock_gettime()
可以获得这种精度的值。无论如何,应该使用clock_getres()
来测试时钟分辨率是否足够高以提供有效值。
答案 2 :(得分:1)
#include <stdio.h>
#include <sys/time.h> //gettimeofday()
int main()
{
struct timeval NTP_value;
gettimeofday(&NTP_value, NULL);
printf("\nsince January 1, 1970: %ld.%ld s\n", (long int)NTP_value.tv_sec,(long int)NTP_value.tv_usec);
// that value is since 1970. So you just have to add 70years and 17 days
printf("\nsince January 1, 1900: %.6f s\n", (float)NTP_value.tv_sec+ (float)2208988800 + (float)NTP_value.tv_usec/1000000);
return 0;
}