# pocoproject/poco

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/pocoproject-poco).**

9,438 stars · 2,313 forks · C++ · NOASSERTION

## Links

- GitHub: https://github.com/pocoproject/poco
- Homepage: https://pocoproject.org
- awesome-repositories: https://awesome-repositories.com/repository/pocoproject-poco.md

## Topics

`c-plus-plus` `configuration` `cross-platform` `database-access` `http-client` `http-server` `json` `logging` `mongodb-client` `networking` `poco` `redis-client` `sql` `xml`

## Description

POCO is a comprehensive C++ application framework that provides a cross-platform set of libraries for building network-centric applications. It offers a unified abstraction layer that wraps platform-specific APIs, enabling the same code to run across desktop, server, mobile, IoT, and embedded systems. The framework is organized into modular libraries that can be compiled and linked selectively, allowing developers to include only the components their application needs.

The framework distinguishes itself through its broad coverage of application infrastructure needs, including threading and synchronization primitives, an event-driven notification system, and a plugin-based architecture for runtime extensibility. It provides a complete networking suite with support for TCP/IP, HTTP, FTP, and email protocols, along with built-in cryptographic capabilities for securing communications. The unified data access layer abstracts multiple database backends including SQLite, MySQL, PostgreSQL, ODBC, and MongoDB through a single interface, while also supporting key-value stores like Redis.

Beyond its core networking and database capabilities, POCO includes libraries for data serialization with JSON and XML, application configuration management, logging, and command-line argument parsing. It provides utilities for string manipulation, regular expressions, date and time handling, and binary data streams. The framework also supports building server applications that can run as Windows services or Unix daemons, and includes features for dynamic type handling and memory management through smart pointers.

The libraries can be installed through package managers like vcpkg or Conan, and support building with GNU Make and CMake for cross-platform development, including Android native libraries and embedded Linux targets.

## Tags

### Networking & Communication

- [Networked Application Frameworks](https://awesome-repositories.com/f/networking-communication/networked-application-frameworks.md) — Provides a comprehensive framework for building network-centric applications across platforms. ([source](https://docs.pocoproject.org/))
- [Networking Libraries](https://awesome-repositories.com/f/networking-communication/networking-libraries.md) — Provides a complete suite of networking libraries for TCP/IP, HTTP, FTP, and SMTP protocols.
- [Socket Networking](https://awesome-repositories.com/f/networking-communication/socket-networking.md) — Ships socket networking libraries for TCP, UDP, multicast, and raw socket communication. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))
- [TCP Socket Programming](https://awesome-repositories.com/f/networking-communication/tcp-socket-programming.md) — Provides TCP/IP socket programming support including TCP, UDP, multicast, and raw sockets. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))
- [Typed Event Broadcasts](https://awesome-repositories.com/f/networking-communication/event-notifications/typed-event-broadcasts.md) — Ships a centralized notification center for typed event broadcasting and subscription.
- [Redis and MongoDB Clients](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-services/redis-and-mongodb-clients.md) — Includes client libraries for interacting with Redis, MongoDB, and Prometheus services. ([source](https://docs.pocoproject.org/))
- [Email Sending and Retrieval](https://awesome-repositories.com/f/networking-communication/smtp-routing/smtp-sending/email-sending-and-retrieval.md) — Ships client libraries for sending mail via SMTP and retrieving mail from POP3 servers. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))

### Operating Systems & Systems Programming

- [Cross-Platform C++ Libraries](https://awesome-repositories.com/f/operating-systems-systems-programming/cross-platform-c-libraries/cross-platform-c-libraries.md) — Provides a comprehensive set of cross-platform C++ libraries for building network-centric applications.
- [Dynamic Library Loading](https://awesome-repositories.com/f/operating-systems-systems-programming/dynamic-library-loading.md) — Provides a plugin-based architecture for dynamically loading shared libraries at runtime. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))

### Part of an Awesome List

- [Database Access and ORM](https://awesome-repositories.com/f/awesome-lists/data/database-access-and-orm.md) — Provides a unified data access layer for querying relational and NoSQL databases.
- [Concurrency and Multithreading](https://awesome-repositories.com/f/awesome-lists/devops/concurrency-and-multithreading.md) — Provides threading, synchronization, and event-driven primitives for building concurrent applications.
- [C++ Application Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/desktop-application-frameworks/c-application-frameworks.md) — Provides a comprehensive C++ application framework with threading, logging, configuration, and cryptography.
- [XML Parsing](https://awesome-repositories.com/f/awesome-lists/data/html-and-xml-parsing/xml-parsing.md) — Provides XML parsing, creation, and transformation capabilities for structured data exchange. ([source](https://docs.pocoproject.org/))
- [NoSQL Databases](https://awesome-repositories.com/f/awesome-lists/data/nosql-databases.md) — Provides client libraries for interacting with MongoDB and Redis NoSQL data stores. ([source](https://docs.pocoproject.org/current/))
- [Command Line Parsing](https://awesome-repositories.com/f/awesome-lists/devtools/command-line-parsing.md) — Provides command-line argument parsing and configuration management for building CLI tools. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))
- [Networking Libraries](https://awesome-repositories.com/f/awesome-lists/devtools/networking-libraries.md) — Framework for building network-based and internet applications.

### Data & Databases

- [Data Access and Querying](https://awesome-repositories.com/f/data-databases/data-access-querying.md) — Provides a single data access interface for connecting to and querying MySQL, PostgreSQL, SQLite, and ODBC databases. ([source](https://docs.pocoproject.org/))
- [Data Serialization and Parsing](https://awesome-repositories.com/f/data-databases/data-serialization-and-parsing.md) — Provides libraries for parsing and generating JSON and XML structured data. ([source](https://docs.pocoproject.org/))
- [Data Serialization Libraries](https://awesome-repositories.com/f/data-databases/data-serialization-libraries.md) — Provides libraries for parsing and generating JSON and XML structured data.
- [SQL Statement Executions](https://awesome-repositories.com/f/data-databases/sql-statement-parsing/sql-statement-executions.md) — Sends SQL queries and commands to databases and retrieves result sets through a unified interface. ([source](https://docs.pocoproject.org/00300-DataDeveloperManual.html))
- [Unified Data Access Interfaces](https://awesome-repositories.com/f/data-databases/unified-data-access-interfaces.md) — Provides a unified data access layer that abstracts MySQL, ODBC, PostgreSQL, and SQLite behind a single interface. ([source](https://docs.pocoproject.org/))
- [Chained Stream Pipelines](https://awesome-repositories.com/f/data-databases/data-i-o/streaming-i-o/chained-stream-pipelines.md) — Provides chained stream pipelines with automatic encoding and byte-order conversion for I/O.
- [Dynamic Type Managers](https://awesome-repositories.com/f/data-databases/data-type-managers/dynamic-type-managers.md) — Implements runtime type wrappers for assigning and converting between C++ types dynamically. ([source](https://docs.pocoproject.org/Poco.Dynamic.html))
- [Runtime Converters](https://awesome-repositories.com/f/data-databases/data-type-managers/dynamic-type-managers/runtime-converters.md) — Converts between C++ types at runtime using a polymorphic wrapper with type checking. ([source](https://docs.pocoproject.org/Poco.Dynamic.Impl.html))
- [Database Connectivity Interfaces](https://awesome-repositories.com/f/data-databases/database-connectivity-interfaces.md) — Provides a unified ODBC connector for querying any database with an ODBC driver. ([source](https://docs.pocoproject.org/Poco.Data.ODBC.html))
- [Database Transaction Management](https://awesome-repositories.com/f/data-databases/database-transaction-management.md) — Groups multiple database operations into atomic units that commit or roll back as a whole. ([source](https://docs.pocoproject.org/00300-DataDeveloperManual.html))
- [Date and Time Libraries](https://awesome-repositories.com/f/data-databases/date-and-time-libraries.md) — Provides date and time handling for scheduling, formatting, and arithmetic operations. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))
- [File System Access](https://awesome-repositories.com/f/data-databases/file-system-access.md) — Provides abstractions for manipulating files and directories with paths, files, and directory iterators. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))
- [Key-Value Store Clients](https://awesome-repositories.com/f/data-databases/key-value-store-clients.md) — Communicates with Redis and MongoDB key-value stores for structured data retrieval. ([source](https://docs.pocoproject.org/))
- [MongoDB Database Drivers](https://awesome-repositories.com/f/data-databases/mongodb-database-drivers.md) — Connects to and performs operations on MongoDB document databases for flexible storage. ([source](https://docs.pocoproject.org/))
- [PostgreSQL Client Libraries](https://awesome-repositories.com/f/data-databases/postgresql-database-platforms/postgresql-client-libraries.md) — Provides a PostgreSQL connector for connecting to and querying databases through a session-based interface. ([source](https://docs.pocoproject.org/Poco.Data.PostgreSQL.html))
- [SQL Placeholder Bindings](https://awesome-repositories.com/f/data-databases/query-translators/placeholder-rebinders/sql-placeholder-bindings.md) — Supports binding typed values to SQL placeholders to prevent injection attacks and enable query reuse. ([source](https://docs.pocoproject.org/00300-DataDeveloperManual.html))
- [Redis Clients](https://awesome-repositories.com/f/data-databases/redis-clients.md) — Includes a Redis client library for interacting with key-value stores for caching and messaging. ([source](https://docs.pocoproject.org/))
- [Connection Managers](https://awesome-repositories.com/f/data-databases/sqlite-database-management/connection-managers.md) — Ships a dedicated SQLite connector for local file-based database access. ([source](https://docs.pocoproject.org/Poco.Data.SQLite.html))
- [Binary Data Streaming](https://awesome-repositories.com/f/data-databases/storage-abstraction/file-storage-services/binary-data-streaming.md) — Reads and writes binary data with automatic byte-order conversion for portable serialization. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))

### DevOps & Infrastructure

- [Unified Data Access Layers](https://awesome-repositories.com/f/devops-infrastructure/api-service-management/api-management/unified-data-access-layers.md) — Provides a single SQL abstraction over multiple database backends through driver-specific sessions.
- [Service and Daemon Builders](https://awesome-repositories.com/f/devops-infrastructure/application-server-deployments/service-and-daemon-builders.md) — Creates server processes that run as Windows services or Unix daemons with testing fallback. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))

### Programming Languages & Runtimes

- [JSON Parsing](https://awesome-repositories.com/f/programming-languages-runtimes/json-parsing.md) — Parses JSON-formatted text into structured data objects for programmatic access. ([source](https://docs.pocoproject.org/Poco.JSON.html))
- [C++ Regular Expression Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/c-regular-expression-libraries.md) — Integrates the PCRE2 library for regular expression matching and text pattern manipulation. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))

### Security & Cryptography

- [Data Encryption](https://awesome-repositories.com/f/security-cryptography/data-encryption.md) — Provides cryptographic functions for encrypting and decrypting data in transit and at rest. ([source](https://docs.pocoproject.org/))
- [Secure Communication Protocols](https://awesome-repositories.com/f/security-cryptography/secure-communication-protocols.md) — Implements secure communication protocols with encryption and signing for data in transit. ([source](https://docs.pocoproject.org/))

### Software Engineering & Architecture

- [Application Configuration](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/configuration-scopes/application-configuration.md) — Ships libraries for reading settings from command-line arguments, configuration files, and environment variables. ([source](https://docs.pocoproject.org/))
- [Cross-Platform Abstraction Layers](https://awesome-repositories.com/f/software-engineering-architecture/cross-platform-abstraction-layers.md) — Provides a unified abstraction layer wrapping platform-specific APIs for cross-platform portability.
- [Thread and Process Synchronization](https://awesome-repositories.com/f/software-engineering-architecture/process-coordinators/thread-and-process-synchronization.md) — Provides threading primitives, mutexes, events, and semaphores for coordinating concurrent execution. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))
- [Pointer Memory Management](https://awesome-repositories.com/f/software-engineering-architecture/block-based-data-models/data-block-memory-management/contiguous-memory-buffers/manual-pointer-management/pointer-memory-management.md) — Provides reference-counted smart pointers and memory pools for automatic memory management. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))
- [Plugin-Based Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/modular-plugin-architectures/plugin-based-architectures/plugin-based-architectures.md) — Organizes functionality into separate loadable modules that can be dynamically linked at runtime.
- [Character Encoding Converters](https://awesome-repositories.com/f/software-engineering-architecture/string-validation-and-normalization/string-encodings/utf-16-encodings/character-encoding-converters.md) — Provides utilities for trimming, comparing, and converting text between character encodings like UTF-8 and UTF-16. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))

### System Administration & Monitoring

- [Synchronization Primitives](https://awesome-repositories.com/f/system-administration-monitoring/alert-thresholds/thread-pool/server-thread-pools/synchronization-primitives.md) — Provides thread pools and synchronization primitives for managing concurrent server workloads.
- [Application Logging](https://awesome-repositories.com/f/system-administration-monitoring/diagnostic-tools/diagnostics/telemetry-and-log-collectors/application-logging.md) — Writes structured log entries to console, files, system logs, or network with filtering. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))
- [Multi-Format Configuration Readers](https://awesome-repositories.com/f/system-administration-monitoring/windows-configuration-management/multi-format-configuration-readers.md) — Read settings from INI, property, XML files, or the Windows registry and map them to application properties. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))

### Web Development

- [Database Connectivity Drivers](https://awesome-repositories.com/f/web-development/database-connectivity-drivers.md) — Provides database connectivity drivers for opening connections to relational databases using connection strings. ([source](https://docs.pocoproject.org/00300-DataDeveloperManual.html))
- [Network Application Development](https://awesome-repositories.com/f/web-development/network-application-development.md) — Provides a complete networking suite for building applications that communicate over TCP/IP, HTTP, and FTP.
- [HTTP Request Handling](https://awesome-repositories.com/f/web-development/backend-development/request-response-handling/http-request-handling.md) — Hosts a built-in HTTP server with multithreaded request handling and custom handler factories. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))

### User Interface & Experience

- [Notification Centers](https://awesome-repositories.com/f/user-interface-experience/form-and-input-management/interaction-and-event-handling/event-handling-architectures/component-events/notification-centers.md) — Implements a centralized notification center for broadcasting and subscribing to events between components. ([source](https://docs.pocoproject.org/current/00100-GuidedTour.html))
