C++:
একটি ওয়েবপেজ ডাউনলোড করা
কিভাবে:
বর্তমান C++ ভার্সনে, আপনি CURL
লাইব্রেরিকে ওয়েব কন্টেন্ট ডাউনলোড করার জন্য ব্যবহার করতে পারেন। এখানে একটি মৌলিক উদাহরণ দেওয়া হল:
#include <curl/curl.h>
#include <iostream>
#include <string>
static size_t writeCallback(void* contents, size_t size, size_t nmemb, void* userp){
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main() {
CURL* curl;
CURLcode res;
std::string readBuffer;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if(res == CURLE_OK) {
std::cout << readBuffer << std::endl;
}
else {
std::cerr << "CURL Error: " << curl_easy_strerror(res) << std::endl;
}
}
return 0;
}
নমুনা আউটপুট:
<!doctype html>
<html>
<head>
<title>Example Domain</title>
...
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this domain ...</p>
</div>
</body>
</html>
গভীর ডাইভ
মূলত, কেবল C++ দিয়ে ওয়েব পেজ ডাউনলোড করার জন্য কোনো স্ট্যান্ডার্ড পদ্ধতি ছিল না। প্রোগ্রামাররা প্ল্যাটফর্ম-নির্দিষ্ট সমাধান বা বিভিন্ন তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করে থাকে। এখন, libcurl
হচ্ছে একটি বিস্তৃতভাবে সমর্থনকৃত এবং বহুমুখী লাইব্রেরি, যা URL এর মাধ্যমে ডাটা ট্রান্সফারের জন্য ব্যবহার করা হয়। আপনার C++ কোডের সাথে সংযুত ও কম্পাইল করা, curl হল একটি যাওয়ার মতো টুল।
libcurl এর বিকল্পগুলো অন্তর্ভুক্ত হচ্ছে Poco’s HTTPClientSession এবং C++ Rest SDK (যাকে আরও Casablanca বলা হয়)। যেখানে libcurl হল C-ভিত্তিক এবং HTTP অনুরোধের ক্ষেত্রে আপনি যতটা সম্ভব নিম্ন স্তরে যেতে পারেন, সেখানে Poco এবং Casablanca আরও অধিক আদর্শ সি++ ইন্টারফেস অফার করে, যা কিছু ডেভেলপার পছন্দ করতে পারে।
অন্তরালে, যখন আপনি একটি ওয়েব পেজ ডাউনলোড করেন, তখন HTTP প্রোটোকল কাজ শুরু করে। একটি GET অনুরোধ সার্ভারে প্রেরণ করা হয়, এবং ধরে নেওয়া হয় যে সবকিছু ঠিকঠাক চলছে, সার্ভার একটি HTTP রেসপন্সে মোড়া কন্টেন্টের সাথে সাড়া দেয়।