This project will be used to teach TCP IP basics for Java students, my lack of expertise on java is what makes me ask for your help. The chat is a clone of mIRC but more [login to view URL] must be a "Server" which must use threads in order to accept multiple [login to view URL] there will be a "Client", with GUI. As you run the client, there must be a login feature where the user places the ipadress of the server, the port number to use and his nickname, after pressing a "connect" button, the user will enter a "general" chat room, where any user can participate, when a new user enters, a message should appear telling other users that this new user is connected, also when a user parts of the chat room, there would be a similar message. Any particular user could create a new room, with any name he decides. There must be a list with these rooms in order to other users to see them and "join". When a user "joins" or "leaves" the room, there must be an announcement similar to the one described above. Once the user is in a room, the messages sent would only be seen in that particular room. If a user is inactive for more than 2 minutes, he must be logged off of the chat, and giving the respective announcements. Any user can send a private message to another user, this could be implemented as a new room where only the 2 users appear (and it is not visible in the "rooms list"), or as a "message from xxx: xxxxxx" in the room window, but it must be seen only by the selected user. (private message). On the main pane (as mirc) there will be all the messages sent to the room, from all users. Every message should include the nickname of the user, example (Tony: Hello everyone) There must be a list of users so that a nickname couldnt be used twice. I have several examples of code that could help you start, and the code for the GUI, I include a snapshot of it. Please understand Im a student and this would help me teach my lab, also note that I cant afford big numbers. Thanks
## Deliverables
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
It would be great if the program is well documented .
## Platform
Windows, all versions (mostly xp)