Добрый день!
С недавних пор начал использовать libcurl в своем проекте, но одно "но" почемуто не закрываются соединения,
т.е. после часа работы программы после вызова netstat "висят" много TIME_WAIT, т.е. как я уже говорил видимо libcurl не закрывает сокеты? Привожу код, который я периодически вызываю в своей программе, так же меня интересует чем отличаются функции curl_easy* от curl_share*, из того что написано на официальном сайте мало что узнал, т.к. слабо владею английским
BOOL __stdcall libcurl_download(LPSTR lpszUrl,LPVOID* addrlpMem,DWORD* addrdwSize)
{
BOOL ret = false;
CURL *curl_handle;
CURLcode result;
MemoryStruct ms;
if( curl_handle = curl_easy_init() )
{
// Òåêóùèé óðë
curl_easy_setopt(curl_handle,CURLOPT_URL,lpszUrl);
// User-Agent
curl_easy_setopt(curl_handle,CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1) Gecko/20061010 Firefox/2.0");
// Accept-Encoding
curl_easy_setopt(curl_handle,CURLOPT_ENCODING,"gzip,deflate");
// Timeout
curl_easy_setopt(curl_handle,CURLOPT_TIMEOUT,20);
curl_easy_setopt(curl_handle,CURLOPT_NOPROGRESS,1);
struct curl_slist *headers=NULL;
headers = curl_slist_append(headers, "Connection: close");
curl_easy_setopt(curl_handle, CURLOPT_HTTPHEADER, headers);
// send all data to this function
curl_easy_setopt(curl_handle,CURLOPT_WRITEFUNCTION,WriteMemoryCallback);
// we pass our 'chunk' struct to the callback function
curl_easy_setopt(curl_handle,CURLOPT_WRITEDATA,&ms);
if( (result = curl_easy_perform(curl_handle)) == CURLE_OK )
{
// Åñëè äîêóìåíò ñêà÷àë ïîëíîñòüþ
}
// free the header list
curl_slist_free_all(headers);
// always cleanup
curl_easy_cleanup(curl_handle);
}
}
return ret;
}