This is *not* a formal assignment; it will not be collected, graded, or reviewed. Nevertheless, I suggest that you do it for two reasons: * If you can't do it, you may not have adequate background for the programming assignments. * You'll need the code for a real homework assignment... The "assignment" is to write a network client and server. The client will take three command-line arguments, a host name or IP address -- both forms must be accepted -- a port number, and a "user name" -- make up whatever you want. When it connects to the server, it will first send a single line containing the user name; it will then loop until end-of-file reading from both stdin and the network connection. Anything it sees on stdin, it copies to the server; anything it sees on the network connection from the server, it writes to stdout. The server accepts many network connections; the only limit is the maximum number of open file descriptors. When a client connects, it first reads the user name, and stores that in a per-connection data structure. It then reads full lines from each client. When it accumulates a full line from any connection, it writes that client's user name and the line to all of the other client connections. In other words, this is a simple, multi-client chat server. Things to worry about include how long a line is, how to read a line without blocking, and other forms of client misbehavior.