Mar 2025 – Jul 2025
Distributed ASCII-Art Network
C++ servers, clients and intermediary “fork” servers that cooperate over a real switched network to serve ASCII-art drawings.
My roleDeveloper on a 4-person team: fork server, threaded simulation and the team's switch configuration
The networks and operating systems capstone: build a service that several servers on different machines can answer redundantly. Drawing servers store ASCII-art figures in a custom file system, fork servers route clients to them, and every team's implementation has to interoperate over the course's shared protocol and physical network.
Servers and forwarding
- Stage 1: implemented the server's request forwarding, a signal handler for clean shutdowns and the build setup, and wrote the design documentation.
- Stage 2: implemented the fork server (the intermediary that receives client requests and hands them to drawing servers), with request handling and the server injected as a dependency.
Threaded simulation
- Designed a common base class so the server, fork server and client all run as threads inside one simulation, replacing the first stage's process and message-queue approach, and implemented the client and the instruction set.
- Integrated the i-node file system that stores the drawings in a single binary disk file split into 256-byte blocks.
The physical network
- Configured our island's L2 switch and multilayer (L3) switch, first in Packet Tracer and then on the physical hardware in the lab.
- Tested connectivity and requests against other teams' implementations using the inter-group UDP protocol (discovery, requests and responses), and documented the system with its functionality diagram and the final presentations.
Built with
C++POSIX socketsThreadsHTTPUDPL2/L3 switching
Next project
MangaKaCR POS & Inventory Platform →



