C++ के लिए HTTP-क्लाइंट: नेटवर्क कार्य के लिए शीर्ष लाइब्रेरीज़

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ के लिए HTTP-क्लाइंट: सर्वश्रेष्ठ लाइब्रेरीज़ का अवलोकन



C++ में आधुनिक अनुप्रयोगों को विकसित करते समय, दूरस्थ सर्वरों के साथ बातचीत के बिना काम चलाना मुश्किल है। चाहे वह डेटा डाउनलोड करना हो, फॉर्म भेजना हो, REST API के साथ काम करना हो या बस वेब पेजों को पार्स करना हो — एक विश्वसनीय C++ के लिए HTTP-क्लाइंट आवश्यक है। इस लेख में, हम चार सर्वश्रेष्ठ लाइब्रेरीज़ पर चर्चा करेंगे जो आपको HTTP प्रोटोकॉल के साथ आसानी से और कुशलता से काम करने में मदद करेंगी।



1. cpp-httplib — सरलता और हल्कापन



cpp-httplib (या बस httplib) एक header-only लाइब्रेरी है जिसे इंस्टॉल करने की आवश्यकता नहीं है। यह छोटे प्रोजेक्ट्स के लिए आदर्श है जहाँ आप डिपेंडेंसीज़ से परेशान नहीं होना चाहते।



  • लाभ: न्यूनतम API, "बॉक्स से बाहर" काम करता है, HTTPS (OpenSSL के माध्यम से) का समर्थन करता है।
  • नुकसान: सीमित कार्यक्षमता (कोई मल्टीथ्रेडेड अनुरोध नहीं, कोई WebSocket नहीं)।


#include <httplib.h>#include <iostream>

int main() { httplib::Client cli("http://jsonplaceholder.typicode.com"); auto res = cli.Get("/posts/1"); if (res && res->status == 200) { std::cout << "उत्तर: " << res->body << std::endl; } return 0;}


2. libcurl — सिद्ध अनुभवी



libcurl C/C++ में HTTP के साथ काम करने के लिए डी-फैक्टो मानक है। इसका उपयोग हजारों प्रोजेक्ट्स में किया जाता है, जिसमें वेब सर्वर और कमांड-लाइन उपयोगिताएँ शामिल हैं। इसके लिए लाइब्रेरी की स्थापना और लिंकिंग की आवश्यकता होती है।



  • लाभ: बड़ी संख्या में प्रोटोकॉल (HTTP/2, FTP, SMTP, WebSocket), क्रॉस-प्लेटफ़ॉर्म, उच्च प्रदर्शन।
  • नुकसान: C-शैली API (C++ के लिए असुविधाजनक), मल्टीथ्रेडिंग का जटिल कॉन्फ़िगरेशन।


#include <curl/curl.h>#include <string>

size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* output) { size_t total = size * nmemb; output->append((char*)contents, total); return total;}

int main() { CURL* curl = curl_easy_init(); if (curl) { std::string response; curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); curl_easy_perform(curl); curl_easy_cleanup(curl); } return 0;}


3. Boost.Beast — Boost की शक्ति और अतुल्यकालिकता



Boost.Beast Boost इकोसिस्टम का हिस्सा है, जो निम्न-स्तरीय HTTP और WebSocket क्षमताएँ प्रदान करता है। यह लाइब्रेरी Boost.Asio पर बनी है, जो अतुल्यकालिक संचालन पर पूर्ण नियंत्रण देती है।



  • लाभ: पूर्ण अतुल्यकालिकता, HTTP/1.1, WebSocket का समर्थन, C++17/20 के साथ संगतता।
  • नुकसान: Asio की गहरी समझ की आवश्यकता, सरल अनुरोधों के लिए बड़ी मात्रा में कोड।


#include <boost/beast/core.hpp>#include <boost/beast/http.hpp>#include <boost/asio.hpp>#include <iostream>

namespace beast = boost::beast;namespace http = beast::http;namespace net = boost::asio;

int main() { net::io_context ioc; beast::tcp_stream stream(ioc); stream.connect("httpbin.org", 80);

http::request<http::string_body> req{http::verb::get, "/get", 11}; req.set(http::field::host, "httpbin.org"); http::write(stream, req);

beast::flat_buffer buffer; http::response<http::dynamic_body> res; http::read(stream, buffer, res); std::cout << beast::buffers_to_string(res.body().data()) << std::endl; return 0;}


4. Poco — कॉर्पोरेट मानक



Poco (POrtable COmponents) C++ के लिए एक पूर्ण फ्रेमवर्क है, जिसमें HTTP-क्लाइंट, सर्वर, नेटवर्क सॉकेट, XML/JSON के साथ कार्य शामिल है।

अनुशंसाएँ