TCP/IP Chat Demo Application
----------------------------
This is a simple demonstration of how to use the classes in the
System.Net.Sockets namespace for asynchronous TCP/IP communication. It also
demonstrates using the System.Threading.ThreadPool class to queue worker
threads.

The application can act as a client or server instance, and two instances are
required to be running, with one acting as the server.

Known Issues
------------
- Attempting to connect to 127.0.0.1 or localhost can sometimes result in the
  connection failing. To get around this when attempting to connect to a server
  instance running on the local PC, use either the local PCs machine name or the
  IP address returned by Ipconfig.exe.

- If the server instance stops listening, the client currently has no way of
  determining this. It will still attempt to send data, and no errors will be
  reported when doing so.

- The server doesn't currently support multiple client connections. Although no
  exceptions will be raised, and both clients will be able to send data to the
  server, any data the server sends will only be received by the last client to
  connect.

- The send mechanism is rather crude, and simply attempts to send the last line
  of text in the textbox. If the last line is blank then no data is received.
