c++使用libcurl从HTTP时间服务器获取网络时间

实现网络时间同步或获取

libcurl是一个支持多种协议的客户端库,包括HTTP。你可以使用它发送HTTP请求到时间服务器(如http://worldtimeapi.org/api/timezone/UTC)来获取时间信息。

以下是使用libcurl从HTTP时间服务器获取时间的代码样例,亲测有效:

#include <iostream>  
#include <string>  
#include <curl/curl.h>  
  
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, std::string *userp) {  
    ((std::string*)userp)->append((char*)contents, size * nmemb);  
    return size * nmemb;  
}  
  
int main() {  
    CURL *curl;  
    CURLcode res;  
  
    curl_global_init(CURL_GLOBAL_ALL);  
    curl = curl_easy_init();  
    if(curl) {  
        std::string readBuffer;  
  
        curl_easy_setopt(curl, CURLOPT_URL, "http://worldtimeapi.org/api/timezone/UTC");  
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);  
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);  
  
        res = curl_easy_perform(curl);  
        if(res != CURLE_OK)  
            std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;  
        else  
            std::cout << readBuffer << std::endl;  
  
        curl_easy_cleanup(curl);  
    }  
    curl_global_cleanup();  
    return 0;  
}

readBuffer的结果如下

{
  "utc_offset": "+00:00",
  "timezone": "UTC",
  "day_of_week": 4,
  "day_of_year": 270,
  "datetime": "2024-09-26T10:40:29.045214+00:00",
  "utc_datetime": "2024-09-26T10:40:29.045214+00:00",
  "unixtime": 1727347229,
  "raw_offset": 0,
  "week_number": 39,
  "dst": false,
  "abbreviation": "UTC",
  "dst_offset": 0,
  "dst_from": null,
  "dst_until": null,
  "client_ip": "211.103.191.242"
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值