использование libcurl для мониторинга состояния сети - PullRequest
1 голос
/ 27 февраля 2011

Мне нужна программа, которая опрашивает сайт каждую секунду и отвечает, если сайт не отвечает в течение 15 секунд.Я сделал следующий взлом из примера программы.На пробном прогоне он печатался 7 раз за 15 секунд.Не могу ли я заставить curl_easy_perform ждать 15 секунд, прежде чем ответить?

int main(void)
{
    CURL *curl;
CURLcode res;
char *postthis="moo mooo moo moo";

curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.1.101");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postthis);
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(postthis));
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 15);

while(1)
{
    Sleep(1000);
    res = curl_easy_perform(curl);
    if(res!= CURLE_OK)
        printf("nada \n");

}

Ответы [ 2 ]

2 голосов
/ 27 февраля 2011

Это был глупый взлом, что терпит неудачу каждую секунду. Это было основано на учебнике POST. Я взломал GET и все работает отлично.

  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "http://URL_HERE");
    **curl_easy_setopt(curl, CURLOPT_TIMEOUT, 5);
    curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);**

 while(1)
{
    Sleep(1000);
    res = curl_easy_perform(curl);
    if(res== CURLE_OK) printf("\n\n yeah \n");
    else printf("\n\n nada \n");

}
    /* always cleanup */
    curl_easy_cleanup(curl);
  }
  return 0;
}
2 голосов
/ 27 февраля 2011
Sleep(15000 - timeTakenForCurlInMs);
...