When the client program exits it does not end its connection,
which causes the server to leave the connection active
until it times out.
* Provide the disconnect event in the client destructor.
* For easier testing, example 3 client no longer loops infinitely.