Проблема с libcurl
От: HitmanRoyal  
Дата: 01.12.06 21:06
Оценка:
Добрый день!
С недавних пор начал использовать 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;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.