测试代码首先把时间设定在了2022年9月5日17点42分30秒,目的是为了验证目标系统时间是否会被成功校正 。测试代码用到了目标系统应提供的一组rtc时钟操作函数 。其中RTCSetSysTime()用于设置系统时间 。RTCSetSystemUnixTimestamp()函数同样也是设置系统时间 , 只不过是通过unix时间戳进行设置 。RTCGetSysTime()函数用于读取当前系统时间 。相较于ping及dns工具,sntp网络校时工具只提供了一个接口函数sntp_update_by_xx()即可完成校时 。我们可以通过ntp服务器地址也可以通过ntp服务器域名进行校时 。该函数的详细使用说明如下:
函数原型
BOOL sntp_update_by_ip(const CHAR *pszNtpSrvIp, time_t(*pfunTime)(void), void(*pfunSetSysTime)(time_t), CHAR bTimeZone, EN_ONPSERR *penErr);
功能
发送一个校时请求到pszNtpSrvIp参数指定的ntp服务器,并等待服务器的响应报文,完成校时操作 。
参数
- pszNtpSrvIp:ntp服务器ip地址
- pfunTime:函数指针 , 与c库函数time()功能及原型相同,返回自1970年1月1日0时0分0秒以来经过的秒数,可以为空
- pfunSetSysTime:函数指针 , 通过unix时间戳设置系统当前时间,由sntp_update_by_xx()内部调用,收到正确的响应报文后调用该函数设置系统时间
- bTimeZone:时区,例如东8区,其值为8;西8区其值为-8
- penErr:如果校时失败,该参数用于接收具体的错误码
校时成功,返回TRUE;失败 , 返回FALSE,具体错误信息参看pennErr保存的错误码 。
sntp_update_by_dns()函数与sntp_update_by_ip()函数除了第一个入口参数变成了域名外 , 其它完全相同,不再赘述 。
【2 onps栈使用说明——ping、域名解析等网络工具测试】
推荐阅读
- Go实现栈与队列基本操作
- 定位java程序中占用cpu最高的线程堆栈信息
- 1 onps栈使用说明——API接口手册
- 索尼wf1000xm4怎么连接_索尼wf1000xm4使用说明
- 3 onps栈移植说明——添加网卡
- 2 onps栈移植说明——编译器及os适配层移植
- 1 onps栈移植说明——onps栈的配置及裁剪
- 开源网络协议栈onps诞生记
- <一>从指令角度了解函数堆栈调用过程
- 漫步者funbuds怎么配对_漫步者funbuds使用说明