Poco لـ C++: دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو Poco ولماذا هو مطلوب؟

\n\n

POCO (POrtable COmponents) هي مكتبة فئات قوية متعددة المنصات للغة C++، توفر حلولاً جاهزة لتطوير تطبيقات الشبكات، وتعدد المهام، والعمل مع قواعد البيانات، وXML، وJSON، وHTTP، وFTP، وSMTP، والعديد من المهام الأخرى. المكتبة مكتوبة بلغة C++ الحديثة ويتم توزيعها بموجب ترخيص Boost Software License، مما يسمح باستخدامها في المشاريع التجارية دون قيود.

\n\n

المزايا الرئيسية لـ Poco:

\n
    \n
  • التعدد المنصات — تعمل على Windows، Linux، macOS، iOS، Android
  • \n
  • النمطية — يمكن ربط المكونات المطلوبة فقط
  • \n
  • الأداء — محسّنة للأنظمة عالية التحميل
  • \n
  • الشمولية — تغطي 90% من المهام النموذجية لمطور C++
  • \n
\n\n

بالنسبة للموقع التعليمي pythonlib.ru، من المهم ملاحظة أن Poco هو نظير لمكتبات Python الشهيرة (requests، asyncio، smtplib)، ولكن للغة C++. إذا كنت تعرف Python وتنتقل إلى C++، فسيكون Poco أفضل صديق لك.

\n\n

تثبيت Poco

\n\n

التثبيت عبر مديري الحزم

\n\n

Linux (Ubuntu/Debian):

\n
sudo apt-get update\nsudo apt-get install libpoco-dev
\n\n

macOS (Homebrew):

\n
brew install poco
\n\n

Windows (vcpkg):

\n
vcpkg install poco
\n\n

التثبيت من المصدر

\n
git clone https://github.com/pocoproject/poco.git\ncd poco\nmkdir cmake-build\ncd cmake-build\ncmake ..\ncmake --build . --config Release\nsudo cmake --install .
\n\n

الربط في مشروع CMake

\n
find_package(Poco REQUIRED COMPONENTS Net NetSSL Util JSON XML)\ntarget_link_libraries(myapp Poco::Net Poco::Util Poco::JSON Poco::XML)
\n\n

بداية سريعة: عميل HTTP في 5 دقائق

\n\n

لنكتب عميل HTTP بسيطًا يحصل على بيانات من موقع ويب ويعرضها في وحدة التحكم:

\n\n
#include <Poco/Net/HTTPClientSession.h>\n#include <Poco/Net/HTTPRequest.h>\n#include <Poco/Net/HTTPResponse.h>\n#include <Poco/StreamCopier.h>\n#include <iostream>\n\nint main() {\n    try {\n        // إنشاء جلسة HTTP\n        Poco::Net::HTTPClientSession session("api.github.com");\n        \n        // تكوين طلب GET\n        Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, "/users/octocat");\n        request.setContentType("application/json");\n        \n        // إرسال الطلب\n        session.sendRequest(request);\n        \n        // استلام الرد\n        Poco::Net::HTTPResponse response;\n        std::istream &responseStream = session.receiveResponse(response);\n        \n        // عرض الحالة ونص الرد\n        std::cout << "Status: " << response.getStatus() << " " << response.getReason() << std::endl;\n        std::cout << "Body:" << std::endl;\n        Poco::StreamCopier::copyStream(responseStream, std::cout);\n        \n    } catch (Poco::Exception &ex) {\n        std::cerr << "Error: " << ex.displayText() << std::endl;\n        return 1;\n    }\n    return 0;\n}
\n\n

التجميع:

\n
g++ -o http_client http_client.cpp -lPocoNet -lPocoFoundation
\n\n

الطرق والوظائف الأساسية لـ Poco (أدوات الشبكات)

\n\n

1. HTTPClientSession — إنشاء جلسة HTTP

\n

ما يفعله: ينشئ اتصالاً بخادم HTTP ويدير إرسال الطلبات واستلام الردود.

\n

المعلمات:

\n
    \n
  • host — سلسلة نصية تحتوي على عنوان الخادم
  • \n
  • port — المنفذ (الافتراضي 80 لـ HTTP)
  • \n
  • timeout — مهلة الاتصال
  • \n
\n

مثال:

\n
Poco::Net::HTTPClientSession session                    

توصيات