This document contains code for a server-client program that allows communication between a server and multiple clients.
The ServerProgram class handles listening for new client connections on the server socket. When a client connects, it sends a greeting message and begins receiving data from the client. Received data is passed to a delegate to update UI controls.
The ClientProgram class manages connecting to the server, receiving data which is passed to a delegate, and sending data to the server.
The serverForm and clientForm classes create instances of the server and client programs, and contain UI elements and button click handlers to control connection, disconnection, and sending/receiving data.