使用libcurl庫把域名轉化IP
阿新 • • 發佈:2019-02-20
環境
vs2005及win7
程式碼
int DomainToIP(const char *domain, string &out) { if (domain == NULL) { return -3; } //判斷是否本身為ip,為ip直接返回 int a,b,c,d; int ret=0; ret=sscanf(domain,"%d.%d.%d.%d",&a,&b,&c,&d); if(ret==4&&(a>=0&&a<=255)&&(b>=0&&b<=255)&&(c>=0&&c<=255)&&(d>=0&&d<=255)) { out = domain; return 0; } CURLcode res; CURL *curl; char *ipstr=NULL; if ((curl = curl_easy_init()) == NULL) { curl_global_cleanup(); return -1; } if ((curl = curl_easy_init()) == NULL) { curl_global_cleanup(); return -2; } curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30L); curl_easy_setopt(curl, CURLOPT_URL,domain); res = curl_easy_perform(curl); if (res != CURLE_OK) { curl_easy_cleanup(curl); curl_global_cleanup(); return res; } res = curl_easy_getinfo(curl, CURLINFO_PRIMARY_IP, &ipstr); if (res != CURLE_OK) { curl_easy_cleanup(curl); curl_global_cleanup(); return res; } out=ipstr; curl_easy_cleanup(curl); curl_global_cleanup(); return CURLE_OK; }
編譯及連結libcurl庫
1.加巨集BUILDING_LIBCURL,我使用的是靜態庫
2.要新增庫ws2_32.lib winmm.lib wldap32.lib libcurl.lib,前三個新增要不然會出現連結錯誤