資源簡介
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?:“?< qDebug()?<“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()?< ??????????????????????????????????????????????????????????//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:?“?< 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\li
?????文件????????3904??2017-06-07?14:28??CNetwork\CNetwork\Debug\CNetwork.tlog\li
?????文件?????????646??2017-06-07?14:28??CNetwork\CNetwork\Debug\CNetwork.tlog\li
?????文件???????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個文件信息
- 上一篇:SSH框架的留言板及回復功能
- 下一篇:數據通信與計算機網絡 楊心強
評論
共有 條評論