For this project you will write a program that will enable users to share files. Each user will maintain a workspace that contains files that can be accessed by others. The program will allow a user to browse the shared workspaces of any registered users and provide the ability to copy a file from a remote workspace to the local workspace. The user will interact with the program using a graphical user interface. The program must include an online help feature that explains in detail how to use the program.
When the user starts the application a P2P server will be started as well. The client portion and server portion of the application must run in separate threads. Additionaly the server must be multi-threaded so that multiple clients can be served concurrently. While the server is running it must be possible, using the client interface, to enable or disable the sharing of files. At startup the server should be disabled, it must be explicitly enabled by the user.
The network protocol that will be used by clients and servers to communicate will be a subset of the FTP protocol. Clients and servers will utilize a name service to make their presence known to other entities in the system.