• 大小: 12.89MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-30
  • 语言: 其他
  • 标签: qt  NTP协议  

资源简介

vs2015+qt5.8.0的开发环境,对NTP协议的网络客户端的实现。服务器用的是win7系统配成的时间服务器,单独的时间服务器经测试也可以!

资源截图

代码片段和文件信息

#include “CNetwork.h“
#include 
#include 
#include 
#include 
#include 
#include 
#include 

CNetwork::CNetwork(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
Qobject::connect(ui.pushButton SIGNAL(clicked()) this SLOT(verifyTime()));
}
void CNetwork::verifyTime()
{
// QString ntpHost = “202.120.2.101“; //use ntp server get network time
// QString ntpHost = “192.168.11.132“;
QString ntpHost = ui.IPlineEdit->text();
QUdpSocket udp_sock;
udp_sock.connectToHost(ntpHost 123);
//request server time
qint8 LI = 0;
qint8 VN = 3;
qint8 MODE = 3;
qint8 STRATUM = 0;
qint8 POLL = 4;
qint8 PREC = -6;
    QDateTime epoch(QDate(1900 1 1));
qint32 second = quint32(epoch.secsTo(QDateTime::currentDateTime()));
////////////////////////////////////////////////////
QDateTime preTime = QDateTime::currentDateTime();
qDebug() << “currnet time :“ << QDateTime::currentDateTime().toString(“yyyy.MM.dd   hh:mm:ss.zzz“);
qDebug() << “second :“ << QString::number(second);


qint32 temp = 0;
QByteArray time_req(48 0);
time_req[0] = (LI << 6) | (VN << 3) | (MODE);
time_req[1] = STRATUM;
time_req[2] = POLL;
time_req[3] = PREC & 0xff;
time_req[5] = 1;
time_req[9] = 1;
time_req[40] = (temp = (second & 0xff000000) >> 24);
temp = 0;
time_req[41] = (temp = (second & 0x00ff0000) >> 16);
temp = 0;
time_req[42] = (temp = (second & 0x0000ff00) >> 8);
temp = 0;
time_req[43] = ((second & 0x000000ff));

QDateTime cur_dt;
                                                              //block wait connect
if (udp_sock.waitForConnected(3000))
{
udp_sock.flush();
//request time
udp_sock.write(time_req);
QString s tmp;
for (int i = 0; i < 48; i++)
{
tmp.sprintf(“%.2X“ (unsigned char)time_req[i]);
s.append(tmp);
tmp.sprintf(“ “);
s.append(tmp);
}
qDebug() << s;
                                                          //block wait reply
if (udp_sock.waitForReadyRead(5000))
{
QByteArray new_time;
QDateTime epoch(QDate(1900 1 1));
QDateTime unix_start(QDate(1970 1 1));

if (udp_sock.pendingDatagramSize() == 0)
{
QMessageBox::information(this “msg“ “please ensure the NTP service‘s ip! “);
return;
}

while (udp_sock.hasPendingDatagrams())
{
new_time.resize(udp_sock.pendingDatagramSize());
udp_sock.read(new_time.data() new_time.size());
}

QString s tmp;
for (int i = 0; i < 48; i++)
{
tmp.sprintf(“%.2X“ (unsigned char)new_time[i]);
s.append(tmp);
tmp.sprintf(“ “);
s.append(tmp);
}
qDebug() << “rece message: “ << s;
QByteArray TransmitTimeStamp;
TransmitTimeStamp = new_time.right(8);
quint32 seconds = TransmitTimeStamp[0];
quint32 *a = &seconds;
quint8 temp = 0;
for (int j = 1; j <= 3; j++)
{
seconds = seconds << 8;
temp = Transmi

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-06-07 14:28  CNetwork\
     目录           0  2017-06-06 14:36  CNetwork\.vs\
     目录           0  2017-06-06 14:36  CNetwork\.vs\CNetwork\
     目录           0  2017-06-06 14:36  CNetwork\.vs\CNetwork\v14\
     文件       30720  2017-06-07 14:28  CNetwork\.vs\CNetwork\v14\.suo
     目录           0  2017-06-07 14:28  CNetwork\CNetwork\
     文件        4737  2017-06-07 14:28  CNetwork\CNetwork\CNetwork.cpp
     文件         310  2017-05-02 08:38  CNetwork\CNetwork\CNetwork.h
     文件          68  2017-04-27 11:11  CNetwork\CNetwork\CNetwork.qrc
     文件        2416  2017-04-28 12:48  CNetwork\CNetwork\CNetwork.ui
     文件        9903  2017-05-04 10:50  CNetwork\CNetwork\CNetwork.vcxproj
     文件        2950  2017-04-27 11:11  CNetwork\CNetwork\CNetwork.vcxproj.filters
     文件         633  2017-04-27 11:11  CNetwork\CNetwork\CNetwork.vcxproj.user
     目录           0  2017-06-07 14:28  CNetwork\CNetwork\Debug\
     文件        1709  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.Build.CppClean.log
     文件        2886  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.log
     文件      236941  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.obj
     目录           0  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.tlog\
     文件        5130  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.tlog\CL.command.1.tlog
     文件      105802  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.tlog\CL.read.1.tlog
     文件        1528  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.tlog\CL.write.1.tlog
     文件         161  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.tlog\CNetwork.lastbuildstate
     文件        1854  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.tlog\custombuild.command.1.tlog
     文件         420  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.tlog\custombuild.read.1.tlog
     文件         614  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.tlog\custombuild.write.1.tlog
     文件        1680  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.tlog\link.command.1.tlog
     文件        3904  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.tlog\link.read.1.tlog
     文件         646  2017-06-07 14:28  CNetwork\CNetwork\Debug\CNetwork.tlog\link.write.1.tlog
     文件       87494  2017-06-07 14:28  CNetwork\CNetwork\Debug\main.obj
     文件       89972  2017-06-07 14:28  CNetwork\CNetwork\Debug\moc_CNetwork.obj
     文件        5531  2017-06-07 14:28  CNetwork\CNetwork\Debug\qrc_CNetwork.obj
............此处省略37个文件信息

评论

共有 条评论