This is chat system working as java applet (client written in Java), console application (client written in C++) and server written in C++.
Server responsibilities:
1. Stay running and listening on specified TCP port.
2. Keep clients connections, resend packets to each logged client.
3. Authorize clients.
4. Keep clients login time informations.

Server events:
1. Receive client connection:
a) authorize client.
b) store clients connection data in servers structures.
c) keep client connection active.
d) send information to all logged clients that new client appeared.

2. Connection broken, or receive client log out request.
a) release clients connection data.
b) send information to every logged client that client is not available, or has logged out.

3. Receive public message from client.
a) resend given message to all logged clients.

4. Receive private messege from client to other client.
a) check permission to send from first client to second one.
b) if client has permission to send then send this message
c) if client has no permission to send (or other way receiver does not allow to receive messages from this client) - do not send message, but send error code to sender.

Client responsibilities:
1. Keep interaction with user:
a) java applet - comfortable program that is run via internet browser.
b) linux console application - text based application in linux console/terminal.
2. send clients requests to server.
3. receive messages from server.

Client events: 1. source: User Interface
a) user clicked [log in]
- parse user login
- send login request to server
- receive servers feedback
b) user has inserted public message
- parse user message
- send message to server
c) user has post private message to other user
- parse user message
- send message to server
- receive servers feedback

2. source: server
a) clients log in
- update interface
b) clients public message
- update interface
c) clients private message
- update interface

SkyChatConsole client, gzipped source files
SkypletConsole client, gzipped source files