當前位置:首頁 » 數字幣問答 » libcurl訪問不了數字貨幣

libcurl訪問不了數字貨幣

發布時間: 2021-10-08 22:04:47

1. c++多線程中使用libcurl庫的問題

庫本身是線程安全的,多個線程之間不要共享CURL*的句柄,應該是沒有問題的. 以下是官方說法:
http://curl.haxx.se/libcurl/c/libcurl-tutorial.html 中的Multi-threading Issues:

The first basic rule is that you must never
simultaneously share a libcurl handle (be it easy or multi or whatever)
between multiple threads. Only use one handle in one thread at any
time. You can pass the handles around among threads, but you must never
use a single handle from more than one thread at any given time.
libcurl is completely thread safe, except for two
issues: signals and SSL/TLS handlers. Signals are used for timing out
name resolves (ring DNS lookup) - when built without c-ares support
and not on Windows.
If you are accessing HTTPS or FTPS URLs in a
multi-threaded manner, you are then of course using the underlying SSL
library multi-threaded and those libs might have their own requirements
on this issue. Basically, you need to provide one or two functions to
allow it to function properly.

2. 求助,用libcurl使用Range不起作用

常用函數
1) libcurl的全局初始化及釋放
CURLcode curl_global_init(long flags)

flags: CURL_GLOBAL_ALL //初始化所有的可能的調用。
CURL_GLOBAL_SSL //初始化支持 安全套接字層。
CURL_GLOBAL_WIN32 //初始化win32套接字型檔。
CURL_GLOBAL_NOTHING //沒有額外的初始化。

void curl_global_cleanup(void)
應該在程序開始時調用初始化函數. 雖然不調用這個初始化函數, libcurl會在curl_easy_init()函數中自動調用. 但在多線程處理時, 可能會出現多次自動調用的情況.
2) 初始化下載handle及釋放
CURL *curl = curl_easy_init();

curl_easy_cleanup(curl);
3) 設置下載屬性. 及常用參數.
CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);

1. 設置下載數據的回調函數.
option:
CURLOPT_WRITEFUNCTION //設置回調函數
回調函數原型為: size_t function( void *ptr, size_t size, size_t nmemb, void *userp); 函數將在libcurl接收到數據後被調用。
void *ptr是下載回來的數據.
void *userp是用戶指針, 用戶通過這個指針傳輸自己的數據.
CURLOPT_WRITEDATA

設置回調函數中的void *userp指針的來源。
2. 下載進度控制.
option:
CURLOPT_NOPROGRESS
為了使CURLOPT_PROGRESSFUNCTION被調用. CURLOPT_NOPROGRESS必須被設置為false.
CURLOPT_PROGRESSFUNCTION
CURLOPT_PROGRESSFUNCTION 指定的函數正常情況下每秒被libcurl調用一次.
CURLOPT_PROGRESSDATA

CURLOPT_PROGRESSDATA指定的參數將作為CURLOPT_PROGRESSFUNCTION指定函數的參數.
整個處理與下載數據回調的處理相同.
3. 其它常用屬性. option:
CURLOPT_URL
設置訪問的URI.
CURLOPT_NOSIGNAL
屏蔽其它信號.
CURLOPT_HEADER
取數據時連同HTTP頭部一起取回.
CURLOPT_HEADERFUNCTION
CURLOPT_HEADERDATA
只取HTTP頭部數據, 處理與下載數據回調的處理相同.
CURLOPT_TIMEOUT
超時時間.
CURLOPT_CONNECTIONTIMEOUT
連接等待時間.
CURLOPT_FOLLOWLOCATION
設置支持302重定向
CURLOPT_RANGE
斷點續傳, 指定傳輸分片, 格式:"0-200"
4) 開始下載
CURLcode curl_easy_perform(CURL *handle);

3. 游戲上不去說是找不到序數無法定位序數 58 於動態連接庫 libcurl.dll 上

我也是啊 ,,,速度來個懂得 \\\\玩的問道更新後就這樣了

4. 使用libcurl為什麼無法獲取到數據

是指針的問題, 如果你想在函數中改變指針的值需要在傳入指向指針的指針.
幫你改了下. 有點強迫症, 順便改了改了你的code style.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>

size_t memory_callback(void *data, size_t size, size_t nmemb, void *content)
{
size_t realsize = size * nmemb;
char *p = *(char **)content;
size_t len = p ? strlen(p) : 0;
*(char **)content = realloc(p, len + realsize + 1);
p = *(char **)content;

if (NULL == p)
{
fprintf(stderr,"not enouth memory");
return -1;
}

memcpy(p + len, data, realsize);
p[len + realsize] = '\0';

return realsize;
}

size_t get_content(char *url, char **content)
{
CURL *curl_handle;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl_handle = curl_easy_init();
curl_easy_setopt(curl_handle, CURLOPT_URL, url);
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)");
curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 0L);
curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L);
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, memory_callback);
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)content);
res = curl_easy_perform(curl_handle);
curl_easy_cleanup(curl_handle);
curl_global_cleanup();

return res;
}

int main(int argc, char *argv[])
{
char *content = NULL;

get_content("http://www..com", &content);
printf("%s\n", content);
if (content) free(content);

return 0;
}

5. c語言如何使用libcurl訪問一個網頁,得到源碼後返回給一個字元串變數

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<curl/curl.h>

structstring{
char*ptr;
size_tlen;
};

voidinit_string(structstring*s){
s->len=0;
s->ptr=malloc(s->len+1);
if(s->ptr==NULL){
fprintf(stderr,"malloc()failed ");
exit(EXIT_FAILURE);
}
s->ptr[0]='';
}

size_twritefunc(void*ptr,size_tsize,size_tnmemb,structstring*s)
{
size_tnew_len=s->len+size*nmemb;
s->ptr=realloc(s->ptr,new_len+1);
if(s->ptr==NULL){
fprintf(stderr,"realloc()failed ");
exit(EXIT_FAILURE);
}
memcpy(s->ptr+s->len,ptr,size*nmemb);
s->ptr[new_len]='';
s->len=new_len;

returnsize*nmemb;
}

intmain(void)
{
CURL*curl;
CURLcoderes;

curl=curl_easy_init();
if(curl){
structstrings;
init_string(&s);

curl_easy_setopt(curl,CURLOPT_URL,"curl.haxx.se");
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,writefunc);
curl_easy_setopt(curl,CURLOPT_WRITEDATA,&s);
res=curl_easy_perform(curl);

printf("%s ",s.ptr);
free(s.ptr);

/*alwayscleanup*/
curl_easy_cleanup(curl);
}
return0;
}

6. 有多個網路都連通時,libcurl如何選擇網路

你要建立連接的遠程站點的用戶名及密碼。 *CURLOPT_FOLLOWLOCATION: 設置這個選項為一個非零值(象「Location:「)的頭,伺服器會把它當做HTTP頭的一部分發送(注意這是遞歸的,PHP將發送形如「Location: 「的頭)。 *CURLOPT_PUT:設置這個選項為一個非零值去用HTTP上傳一個文件。要上傳這個文件必須設置CURLOPT_INFILE和 CURLOPT_INFILESIZE選項.*CURLOPT_MUTE:設置這個選項為一個非零值,PHP對於CURL函數將完全沉默。 *CURLOPT_LOW_SPEED_LIMIT:設置一個長整形數,控制傳送多少位元組。 *CURLOPT_LOW_SPEED_TIME:設置一個長整形數,控制多少秒傳送CURLOPT_LOW_SPEED_LIMIT規定的位元組數。 *CURLOPT_RESUME_FROM:傳遞一個包含位元組偏移地址的長整形參數,(你想轉移到的開始表單)。 *CURLOPT_SSLVERSION:傳遞一個包含SSL版本的長參數。默認PHP將被它自己努力的確定,在更多的安全中你必須手工設置。 *CURLOPT_TIMECONDITION:傳遞一個長參數,指定怎麼處理CURLOPT_TIMEVALUE參數。你可以設置這個參數為TIMECOND_IFMODSINCE或 TIMECOND_ISUNMODSINCE。這僅用於HTTP。 *CURLOPT_TIMEVALUE:傳遞一個從1970-1-1開始到現在的秒數。這個時間將被CURLOPT_TIMEVALUE選項作為指定值使用,或被默認TIMECOND_IFMODSINCE使用。下列選項的值將被作為字元串: *CURLOPT_USERPWD:傳遞一個形如[username]:[password]風格的字元串,作用PHP去連接。 *CURLOPT_PROXYUSERPWD: 傳遞一個形如[username]:[password]格式的字元串去連接HTTP代理。 *CURLOPT_RANGE:傳遞一個你想指定的范圍。它應該是」X-Y」格式,X或Y是被除外的。HTTP傳送同樣支持幾個間隔,用逗句來分隔(X-Y,N-M)。 *CURLOPT_POSTFIELDS: 傳遞一個作為HTTP「POST」操作的所有數據的字元串。 *CURLOPT_REFERER:在HTTP請求中包含一個」referer」頭的字元串。 *CURLOPT_USERAGENT:在HTTP請求中包含一個」user-agent」頭的字元串。 *CURLOPT_FTPPORT: 傳遞一個包含被ftp「POST」指令使用的IP地址。這個POST指令告訴遠程伺服器去連接我們指定的IP地址。這個字元串可以是一個IP地址,一個主機名,一個網路界面名(在UNIX下),或是『-』(使用系統默認IP地址)。

7. 動態庫封裝libcurl 實現https請求,請問curl

解決方法為在curl請求時,加入: 復制代碼代碼如下: curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 從證書中檢查SSL加密演算法是否存在 curl https請求代碼

8. 我用libcurl開發了一個訪問https的程序 在linux和win下都會不定期崩潰,看了很多網

訪問https你是指伺服器證書(ssl證書)吧?這個不用自己開發,去申請一個免費的就行了,網頁鏈接這個兼容性和穩定性比較好。

9. 計算機libcurl.dll文件丟失怎麼解決

當運行軟體或游戲時,系統提示「沒有找到libcurl.dll」、「缺少libcurl.dll」等類似錯誤信息。
請下載本站提供的dll文件,使用它可以幫助用戶解決上述問題。
dll文件修復方法:
1、解壓下載的libcurl.dll文件http://www.ddooo.com/softdown/21731.htm。
2、復制文件「libcurl.dll」到系統目錄下。
3、系統目錄一般為:C:\WINNT\System32 64位系統為C:\Windows\SysWOW64
4、最後點擊開始菜單-->運行-->輸入regsvr32 libcurl.dll後,回車即可解決錯誤提示!

10. libcurl 不能處理encoded url么

是指針的問題, 如果你想在函數中改變指針的值需要在傳入指向指針的指針.
幫你改了下. 有點強迫症, 順便改了改了你的code style.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>

size_t memory_callback(void *data, size_t size, size_t nmemb, void *content)
{
size_t realsize = size * nmemb;
char *p = *(char **)content;
size_t len = p ? strlen(p) : 0;
*(char **)content = realloc(p, len + realsize + 1);
p = *(char **)content;

if (NULL == p)
{
fprintf(stderr,"not enouth memory");
return -1;
}

memcpy(p + len, data, realsize);
p[len + realsize] = '\0';

return realsize;
}

size_t get_content(char *url, char **content)
{
CURL *curl_handle;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl_handle = curl_easy_init();
curl_easy_setopt(curl_handle, CURLOPT_URL, url);
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)");
curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 0L);
curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L);
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, memory_callback);
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)content);
res = curl_easy_perform(curl_handle);
curl_easy_cleanup(curl_handle);
curl_global_cleanup();

return res;
}

int main(int argc, char *argv[])
{
char *content = NULL;

get_content("", &content);
printf("%s\n", content);
if (content) free(content);

return 0;
}

熱點內容
區塊鏈炒幣發幣 發布:2025-06-28 10:00:17 瀏覽:487
新浪外匯美元比特幣 發布:2025-06-28 09:52:53 瀏覽:593
幣圈通證價值排行 發布:2025-06-28 09:37:51 瀏覽:900
京東區塊鏈防偽標簽 發布:2025-06-28 09:31:37 瀏覽:629
shib最終 發布:2025-06-28 09:31:01 瀏覽:270
比特幣中國2012年走勢圖 發布:2025-06-28 09:26:26 瀏覽:91
btc交易介面 發布:2025-06-28 09:07:26 瀏覽:668
以太星球雲算力怎麼賺錢 發布:2025-06-28 08:43:25 瀏覽:533
什麼音樂軟體可以輸出ltc信號 發布:2025-06-28 08:40:50 瀏覽:875
無錫火車站去無錫客運中心 發布:2025-06-28 08:26:15 瀏覽:593