cpp qt获取网络时间

https://tf.nist.gov/tf-cgi/servers.cgi 时间服务器列表
直接用ip访问时间服务器比较好。
20200620增加16个时间服务器列表。

bool IsHaveAuthorization()
{
 QDateTime temp_t2 = QDateTime::fromString("2020-06-30 00:00:00", "yyyy-MM-dd hh:mm:ss");
 //https://tf.nist.gov/tf-cgi/servers.cgi  时间服务器列表
 QStringList time_server_list;
 time_server_list
  << "129.6.15.28"
  << "129.6.15.29"
  << "129.6.15.30"
  << "129.6.15.27"
  << "129.6.15.26"
  << "132.163.97.1"
  << "132.163.97.2"
  << "132.163.97.3"
  << "132.163.97.4"
  << "132.163.97.6"
  << "132.163.96.1"
  << "132.163.96.2"
  << "132.163.96.3"
  << "132.163.96.4"
  << "132.163.96.6"
  << "128.138.140.44"
  << "128.138.141.172";
 bool bConnect = false;
 QString str;
 for each (const QString &ip_temp in time_server_list)
 {
  QTcpSocket *socket = new QTcpSocket();
  socket->connectToHost(ip_temp, 13);
  bConnect = socket->waitForConnected(300);
  if (bConnect)
  {
   bConnect = socket->waitForReadyRead(300);
   if (bConnect)
   {
    str = socket->readAll();
    socket->close();
    delete socket;
    break;
   }
   else
   {
    socket->close();
    delete socket;
   }
  }
  else
  {
   socket->close();
   delete socket;
  }
 }
 bool bret = false;
 if (bConnect)
 {
  str = str.trimmed();
  str = str.section(" ", 1, 2);//20-06-13 05:04:31
  str = QString("20") + str;
  QDateTime temp_t = QDateTime::fromString(str, "yyyy-MM-dd hh:mm:ss");
  temp_t.addSecs(60 * 60 * 8);//+8时区
  if (temp_t < temp_t2)
  {
   bret = true;
  }
  else
  {
   bret = false;
  }
 }
 else
 {
  bret = false;
  //取本地时间。
  //QDateTime temp_t = QDateTime::currentDateTime();
  //if (temp_t < temp_t2)
  //{
  // bret = true;
  //}
  //else
  //{
  // bret = false;
  //}
 }
 return bret;
}

猜你喜欢

转载自blog.csdn.net/weixin_43172531/article/details/106731054
cpp
今日推荐