A lightweight chat room application written in C++, using Boost.Asio for asynchronous communication and multi-threading for handling multiple clients concurrently.
- Asynchronous I/O – Non-blocking message handling with Boost.Asio
- Multi-threading – Concurrent client connections
- Room Management – Add/remove clients & broadcast messages
- Session – Manages communication for each client
- Room – Tracks participants and broadcasts messages
- Message – Encodes/decodes headers & bodies
- Server / Client – Entry points for hosting & joining
A C-based proxy server that supports both with and without cache modes. It leverages threads, semaphores, and locks to handle concurrent requests, while using an LRU cache to optimize response times.
- Multi-threading – Concurrent client request handling
- Semaphore-based Synchronization – Safer than condition variables
- Caching (LRU) – Faster responses for repeated requests
- Proxy Capabilities – Request filtering, IP masking, reduced load
- Threads
- Locks
- Semaphores
- Cache (LRU)
- Fixed cache size (large sites may not be stored)
- Same URL with multiple clients can cause cache inconsistency
In the given picture, you can see that the first time it says "URL not found", but when the same request is hit again, it says "Data retrieved from the cache".