এটা প্ৰক্সিয়ে HTML সফলভাৱে আনিব পাৰে আৰু C++ বাফাৰত প্ৰতিলিপি কৰোঁতে এটা ছবি নষ্ট কৰিব পাৰে। প্ৰক্সি প্ৰটোকল সলনি কৰাৰ আগতে ৰিচিভ callback আৰু ইয়াৰ context হিচাপে পাছ কৰা বস্তুটো পৰীক্ষা কৰক।

CURLOPT_WRITEDATA এ ৰাইট callback লৈ এটা পইণ্টাৰ যোগান ধৰে। কাষ্টম callback নোহোৱাকৈ libcurl ৰ ডিফল্ট ৰাইটাৰে এটা FILE * আশা কৰে। &response ৰ দৰে ঠিকনা, য'ত response এটা std::string, তেতিয়াহে অৰ্থপূৰ্ণ হয় যেতিয়া আপোনাৰ callback এ সেই context টো ইচ্ছিত প্ৰকাৰলৈ ঘূৰাই দিয়ে।

static size_t receive(char* data, size_t size,
                      size_t count, void* context) {
    const size_t bytes = size * count;
    auto* body = static_cast<std::string*>(context);
    try {
        body->append(data, bytes);
    } catch (...) {
        return 0;
    }
    return bytes;
}

দুয়োটা অংশ স্থানান্তৰৰ বাবে ব্যৱহৃত সহজ হেণ্ডেলত পঞ্জীয়ন কৰক:

std::string response;
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, receive);
curl_easy_setopt(handle, CURLOPT_WRITEDATA, &response);

append কলটোৱে প্ৰদান কৰা বাইট গণনা ব্যৱহাৰ কৰে। Callback ডেটা null-terminated নহয়, আৰু ছবিত শূন্য বাইট থাকিব পাৰে; strlen ৰে জুখিলে শৰীৰৰ এটা অংশ হেৰুৱাব। এটা সঁহাৰি বিভিন্ন আকাৰৰ বহু callback আহ্বানৰ মাজেৰে আহিব পাৰে।

গ্ৰহণ কৰা বাইট গণনা ঘূৰাই দিলে টুকুৰাটো গ্ৰহণ কৰা হয়। বেলেগ গণনা ঘূৰাই দিলে লিখন ত্ৰুটিৰে স্থানান্তৰ বাতিল হয়। ব্যতিক্ৰম ৰক্ষীয়ে এটা আবণ্টন বিফলতা C callback সীমাৰ মাজেৰে ওলাই যোৱাৰ পৰা ৰাখে; কলাৰে response ক সম্পূৰ্ণ ফাইল হিচাপে গণ্য কৰাৰ আগতে স্থানান্তৰৰ ফলাফল পৰীক্ষা কৰিব লাগিব।

স্থানান্তৰ শেষ নোহোৱালৈকে ষ্ট্ৰিংটো জীৱিত ৰাখক। যদি এচিংক্ৰনাছ ছকেট লিখনে তাৰ পিছত ইয়াৰ সমল আগবঢ়ায়, সেই লিখনো সম্পূৰ্ণ নোহোৱালৈকে সেই বাইটবোৰ জীৱিত ৰাখক। ডাঙৰ সঁহাৰিৰ বাবে, গোটেই শৰীৰ জমা কৰাতকৈ সীমিত ষ্ট্ৰিমিং ব্যৱস্থা শ্ৰেয়।

সম্পৰ্কিত প্ৰবন্ধ