You are to write a Hybrid version of P2P and Client/Server application. It follows a similar yet way simpler architecture as Skype.
The application consists of two programs. The first program is a Server that authenticates in a rather simplistic way users before they can engage in a chat. For the purposes of this project, the server will keep track of only 5 users in a basic plain text file. This file contains a name and an IP address. Example:
Sam [url removed, login to view]
Ann [url removed, login to view]
Lou [url removed, login to view]
Mary [url removed, login to view]
Jack [url removed, login to view]
If you're doing all in one computer and without the use of virtual machines, you could have [url removed, login to view] for all users as all will be running locally.
The second application is the one which asks the user for its name and afterwards will initially connect to the Server to authenticate and upon successful authentication, will get the list of all the peers in their locations. The success of the authentication depends whether the user is registered or not in the list of the server. If the user name is not in the list, then the server will reply NULL instead of the list of user and locations. If NULL is received the application should print an error message accordingly and reask again for a user name.
Each peer should do the procedure mentioned above prior to chatting.
After there are at least two peers at least ON, then they can start chatting sending messages back and forth. These chat paradigm is in a pure P2P fashion. For this purpose, a multithreaded portion is necessary here. The multithreaded portion requires a thread running a client part and a thread running the server part. The client thread send messages and the server thread allows for receiving them.
The first part of the project where authentication happens with the server must be done using TCP sockets.
The second part of the project where chat happens between peers must be done using UDP sockets.
A simple GUI and notes on what each part does. I will run this in NetBeans. This should be very simple, nothing complicated.
I have worked on the P2P project using open source technology JXTA ([url removed, login to view]). But it is for more secure, reliable communications across firewall with less of development efforts. In this project use ca Daha Fazla