MonoNet CLI 0.1
A custom client <--> server networking service
View RepositoryStack
The Challenge
I wanted to make a custom client - server system using modern solution offered by UNIX. The server had to be as fast as possible and able to manage the most clients simultaneously. The challenge was also to secure every communication, giving each client privacy over the network.
I decided to use epoll(7) instead of using select(2) or poll(2) for the I/O management of FDs. In order to secure communications, I chose to use AES encryption for packets.

The Architecture
Client Side
Client side networking logic is only about receiving and sending. I tried to make the client side less about optimizing FDs and I/O and more about being portable. For now, the codebase only compiles for UNIX systems, but the threading system can be rewritten to be used on Windows systems too.
Server Side
Server side networking logic is also about receiving and sending, but also client registering. The server uses epoll(7) for I/O management. MonoNet Server is only available on UNIX systems because of epoll(7).