Poco para C++: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Poco e para que serve?

\n\n

POCO (POrtable COmponents) é uma poderosa biblioteca de classes multiplataforma para C++, que fornece soluções prontas para desenvolvimento de aplicações de rede, multithreading, trabalho com bancos de dados, XML, JSON, HTTP, FTP, SMTP e muitas outras tarefas. A biblioteca é escrita em C++ moderno e distribuída sob a licença Boost Software License, permitindo seu uso em projetos comerciais sem restrições.

\n\n

Principais vantagens do Poco:

\n
    \n
  • Multiplataforma — funciona em Windows, Linux, macOS, iOS, Android
  • \n
  • Modularidade — é possível conectar apenas os componentes necessários
  • \n
  • Desempenho — otimizada para sistemas de alta carga
  • \n
  • Completude — cobre 90% das tarefas típicas de um desenvolvedor C++
  • \n
\n\n

Para o site educacional pythonlib.ru, é importante destacar que Poco é um análogo das bibliotecas populares do Python (requests, asyncio, smtplib), mas para C++. Se você conhece Python e está migrando para C++, Poco se tornará seu melhor amigo.

\n\n

Instalação do Poco

\n\n

Instalação via gerenciadores de pacotes

\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

Instalação a partir dos fontes

\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

Conexão em projeto 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

Início rápido: Cliente HTTP em 5 minutos

\n\n

Vamos escrever um cliente HTTP simples que obtém dados de um site e os exibe no console:

\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        // Criando uma sessão HTTP\n        Poco::Net::HTTPClientSession session("api.github.com");\n        \n        // Formando uma requisição GET\n        Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, "/users/octocat");\n        request.setContentType("application/json");\n        \n        // Enviando a requisição\n        session.sendRequest(request);\n        \n        // Obtendo a resposta\n        Poco::Net::HTTPResponse response;\n        std::istream &responseStream = session.receiveResponse(response);\n        \n        // Exibindo o status e o corpo da resposta\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

Compilação:

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

Principais métodos e funções do Poco (utilitários de rede)

\n\n

1. HTTPClientSession — criação de sessão HTTP

\n

O que faz: Estabelece uma conexão com um servidor HTTP e gerencia o envio de requisições e o recebimento de respostas.

\n

Parâmetros:

\n
    \n
  • host — string com o endereço do servidor
  • \n
  • port — porta (padrão 80 para HTTP)
  • \n
  • timeout — tempo limite da conexão
  • \n
\n

Exemplo:

\n
Poco::Net::HTTPClientSession session                    

Recommendations