Client-Server implementation of a networked printing service for handling vast amounts of print requests coming from users with different levels of privileges and priorities.
A 1996 bytes payload size with a 4 bytes header, are enough to fit simple print requests. Protocol codes, placed in the header, need to be defined in order to identify and process requests accordingly.
Print requests need to be handled based on priority.
To be able to handle multiple users simultaneously, multithreading was utilized.
Sempaphores were used to avoid two threads using the same Data simultaneously and to achieve uninterrupted printing.