2 onps栈使用说明——ping、域名解析等网络工具测试( 三 )

测试代码首先把时间设定在了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、域名解析等网络工具测试】

推荐阅读