0

だから私は私のコンピュータの外部IPアドレスを見つけるこのプログラムを持っています. このデータを変数として書き込む必要がありますが、方法がわかりません。ソースは次のとおりです(過剰なヘッダーについてはすでに知っています。それらはすべて一度に使用されており、まだクリーンアップしていません。)

#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";

}



}

どんな助けでも大歓迎です。

4

1 に答える 1

1

私の知る限り、cURL はストリーミングです。答え全体を保持するわけではありませんが、代わりに答えのチャンクを書き込み関数に渡します。

したがって、次のように、最初に書き込み関数をセットアップする必要があります。

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これにより、応答が変数に保存されます。

PS私が貼り付けたコードはlibglim/curl.hppからのものです。

于 2013-04-03T07:54:44.090 に答える