2013-04-03 3 views
0

Итак, у меня есть эта программа, которая находит внешний IP-адрес моего компьютера. Мне нужно написать эти данные как переменную, но я не знаю, как это сделать. Вот источник (я уже знаю о непомерных заголовки, все они используются в одно время, и я не прибрал ее еще.)Как вернуть данные cURL

#include <stdio.h> 
#include <C:\Documents and Settings\Jacob Grass\My Documents\C++\Server Software\curl\curl.h> 
#include <C:\Documents and Settings\Jacob Grass\My Documents\C++\Server Software\curl\types.h> 
#include <C:\Documents and Settings\Jacob Grass\My Documents\C++\Server Software\curl\easy.h> 
#include <stdlib.h> 
#include <unistd.h> 
#include <windows.h> 
#include <iostream> 
#include <fstream> 
//http://www.cplusplus.com/forum/windows/36638/ 
//http://bot.whatismyipaddress.com/ 
using namespace std; 


int ipfetch (void) 
{ 
    CURL *curl; 
    CURLcode res; 
    curl = curl_easy_init(); 
    if (curl) 
    { 
    curl_easy_setopt (curl, CURLOPT_URL, "http://bot.whatismyipaddress.com/"); 
    res = curl_easy_perform (curl); 
    curl_easy_cleanup (curl); 

    } 

    return 0; 
} 

int main(){ 
while(1){ 

ipfetch(); 

//Sleep in milliseconds 
Sleep(300000); 
cout<<"\n"; 

} 



} 

Любая помощь будет оценена.

ответ

1

AFAIK, cURL потоковая передача: он не будет содержать весь ответ, но вместо этого передаст куски ответа на write function.

Итак, вам нужно настроить функцию записи первого, как это:

size_t curlWriteToString (void *buffer, size_t size, size_t nmemb, void *userp) { 
    ((std::string*) userp)->append ((const char*) buffer, size * nmemb); 
    return size * nmemb;}; 

...

std::string got; 
curl_easy_setopt (curl, CURLOPT_WRITEFUNCTION, curlWriteToString); 
curl_easy_setopt (curl, CURLOPT_WRITEDATA, &got); 

Это сохранит ответ в got переменную для вас.

P.S. Код, который я вставил, составляет от libglim/curl.hpp.

+0

Спасибо, это должно помочь! – mm4rs0

+0

Я думаю, что это работает, но я не могу напечатать «got». Как мне это сделать? – mm4rs0

+0

cout << получен; Какой у вас код? – ArtemGr