Java server | to serve currently connected clients after it has stopped listening | consistent guidelines that make the program easy to read | itself so that it is able to provide the required service | the same computer as its clients or on a different computer | an instance of Socket class in order to exchange information with clients | new client connections if it has stopped listening | a client at the same time | - Waiting for interactions with the user who is in charge of the server, and responding as necessary
- Waiting for clients to try to connect and establishing connections as needed
- For each connected client, waiting for messages coming from that client, and responding when messages arrive
| server | 3.5 - Technology Needed to Build Client-Server Systems | stream of information to the client | when necessary, which involves such actions as notifying each client before terminating its connection | messages from connected clients: performing computations or obtaining information, and normally sending some information back to the requesting client and perhaps sending a message to another client or broadcasting messages to many clients at once. | programmer | many clients simultaneously | messages from all the connected clients | listening if the number of connected clients becomes too high, or prior to shutting down | messages from the client using an instance of InputStream | at least two concurrent threads, and in general n+2, threads where n is the number of connected clients | a record of the connection while a client is connected | clients attempting to connect | connections from many clients | clients - the client may request disconnection by sending a message to the server, the client may just disappear suddenly due to the client crashing or the network connecting going down, or the server may force a client to disconnect if the client is not behaving well | process |