In this project, I used socket programming to design a remote file server interface in which a client can
open, read, write, and close files. With the use of kernel threads, the file server allows for multiple clients to connect
to the server simultaneously and given different permissions, can open, read, write, and close files based on three modes of file
(1) unrestricted mode: anyone can have the file open in read or write mode,
(2) exclusive mode: anyone have the file open in read mode but at most one can have it open in write mode, and
(3) transaction mode: only one distinct client can have the file open for any reason.
The interface involves coding of a client side application and a server side application which can respond to client requests. Further enhancements to the interface I would have implemented, if time had permitted, include a queue for client threads waiting for a particular file so that most important actions are taken in a logical order. Also, I would implement a monitor thread in order to keep from holding up open queued connections forever.
Feel free to download the project on GitHub and try it out yourself