Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

dev-cpp curl reakcja przy braku poprawnego adresu

Ostatnio zmodyfikowano 2012-05-02 18:20
Autor Wiadomość
diunida
Temat założony przez niniejszego użytkownika
dev-cpp curl reakcja przy braku poprawnego adresu
» 2012-04-30 19:16:54
Witam, mam taki problem, potrzebuję zrobić taki kawałek kodu używając curl aby w przypadku braku odpowiedzi od serwera mogła nastąpić jakaś reakcja programu, w tej chwili program się wykłada, program wygląda tak:

C/C++
#include <cstdio>
#include <curl/curl.h>
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>


using namespace std;

size_t write_callback( char * ptr, size_t size, size_t nmemb, void * userdata )
{
    string & str = *(( std::string * ) userdata );
    str.append( ptr, size * nmemb );
    return size * nmemb;
}

int main()
{
   
    ifstream plikk; // Zmienna dzięki, której operujemy na pliku
    plikk.open( "config_ups.txt", ios::in ); // Otwiera plik
    char adres[ 1000 ]; // Zmienna pomocnicza, do której zapisujemy dane z pliku
    plikk >> adres; // Tutaj jest zapisywane
    cout << "adres - " << adres; // Wyświetlamy na ekran
   
    CURL * curl;
    CURLcode res;
    string st, bat, stan;
    int bati, stani;
   
    curl = curl_easy_init();
    cout << endl << "zzz -" << adres << "-" << endl;
    if( curl )
    {
        curl_easy_setopt( curl, CURLOPT_URL, adres );
        curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, & write_callback );
        curl_easy_setopt( curl, CURLOPT_WRITEDATA, & st );
        res = curl_easy_perform( curl );
       
        bat = st.substr( 0, 1 );
        bati = strtol( bat.c_str(), NULL, 10 );
        bati = bati + 3;
        stan = st.substr( 2, 1 );
        stani = strtol( stan.c_str(), NULL, 10 );
        stani = stani + 3;
       
        cout << '\n' << "bazyl " << st << '\n';
        cout << "bat " << bati << '\n';
        cout << "stan " << stani << '\n';
       
    }
    return 0;
}
P-55685
malan
» 2012-05-02 01:46:05
Użyj debuggera i sprawdź, w którym miejscu program się dokładnie wywala :)
P-55770
diunida
Temat założony przez niniejszego użytkownika
» 2012-05-02 18:20:08
wywala się w tym miejscu:
        bat = st.substr( 0, 1 );

ale to dlatego że zmienna "st" jest pusta, chciałbym wiedzieć którą zmienną sprawdzić, aby stwierdzić czy zapytanie przyniosło efekt?

Sprawa rozwiązana.
czas reakcji curl:
'curl_easy_setopt( curl, CURLOPT_TIMEOUT, 5);'

sprawdzenie czy są wyniki:
if ( ! (st == ""))

Dziękuję wszystkim za pomoc.
P-55807
« 1 »
  Strona 1 z 1