Qt程序校正linux系统时间,思路及解决方案

遇到的用户需求:

        ubantu下的一体机或者虚拟机中,用户要求写一个校正程序修改系统时间。因为机子用的内网,不能同步网络时间,导致时间经常和网络时间差较大。用户提供了校正服务器的接口,当用接口获取数据时,成功会返回当前时间的时间戳。

        接口描述如下:

解决思路:

写一个定时器,定时获取接口数据及时间 

 获取到时间同步服务器时发送来的数据时,进行解析,然后转换为指定的格式输出,然后在用linux设置时间的命令来设置系统时间即可。关键代码如下:

 然后用web服务的模拟代码来充当用户提供的时间校正服务器来测试:

当收到获取时间戳的请求时,获取当前时间戳发送给请求的客户端,也就是要校正系统时间的qt程序

 

扫描二维码关注公众号,回复: 16478298 查看本文章

到这里还没有完成,得把程序设置为开机自启。

直接写bash的命令,设置为开机自启动,server模式这种设置的程序启动,是以root权限启动的,可以修改系统时间

#! /bin/sh
#获取当前所在目录路径
WORK_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")"  && pwd)"
#进程名字可修改
PRO_NAME=/etc/systemd/system/checkSystemTime.service
sudo touch ${PRO_NAME}
sudo chmod 777 ${PRO_NAME}

echo '
[Unit]
Description=checkDateTimeServer
After=network.target
 
[Service]
Type=simple
ExecStart='${WORK_PATH}'/checkSystemTime

[Install]
WantedBy=multi-user.target

' > ${PRO_NAME}

sudo systemctl enable checkSystemTime.service
sudo systemctl start checkSystemTime.service # 启动checkSystemTime
sudo systemctl status checkSystemTime.service # 查看checkSystemTime状态
sudo systemctl disable checkSystemTime.service # 停用checkSystemTime,下次开机不在启动

猜你喜欢

转载自blog.csdn.net/qq_44667165/article/details/128496161
今日推荐