2015-05-28 97 views
1

有了這個代碼,我使用的libcurl和寫入數據到MySQL(在Web服務器完成)發送字符串添加到Web服務器。 我的問題是,這個函數的每次調用程序啓動與網絡服務器一個新的密鑰交換。我想與服務器建立持久連接。 我在這裏搜索和網絡已經和沒有找到任何令人滿意的解決方案。 多處理器和強迫保持活着還是打開一個新的連接。保活捲曲Çhtttps POST

以下是我的代碼建立SSL連接:

CURL *curl; 
CURLcode res; 

res = curl_global_init(CURL_GLOBAL_DEFAULT); // Check for errors 

if(res != CURLE_OK) { 
    fprintf(stderr, "curl_global_init() failed: %s\n", 
    curl_easy_strerror(res)); 
    return 1; 
} 

// curl handler 
curl = curl_easy_init(); 

if(curl) { 
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, STRING); 
    curl_easy_setopt(curl, CURLOPT_URL, "https://IP/something/something.php"); 
    curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L); 
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); //verbose output activated 
    struct curl_slist *headers=NULL; 
    headers = curl_slist_append(headers, "Content-Type: application/json"); // type JSON 
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); 

    // Perform the request, res will get the return code 
    res = curl_easy_perform(curl); 

    // Check for errors 
    if(res != CURLE_OK) 
     fprintf(stderr, "curl_easy_perform() failed: %s\n", 
       curl_easy_strerror(res)); 

    // cleanup 
    curl_slist_free_all(headers); 
    curl_easy_cleanup(curl); 
} 
curl_global_cleanup(); 
+0

感謝您使看起來相當dragosht代碼 – gamejunkie959

回答

2

由是Daniel Stenberg發明here,這是一個類似/同樣的問題回答。

重新使用相同的捲曲處理在隨後的請求!不要在它們之間再次調用curl_easy_cleanup(curl)和curl_easy_init()。

所以解決方案是隻調用一次curl_easy_cleanup(curl)和curl_easy_init()。