// Equivalent to ServerAcceptCallback
        private static void ClientConnectCallback(IAsyncResult ar)
        {
            Socket client = (Socket)ar.AsyncState;

            client.EndConnect(ar);

            SendState ss = new SendState();

            ss.workSocket = client;
            sendState     = ss;

            RecvState rs = new RecvState();

            rs.workSocket = client;
            recvState     = rs;

            NetworkClock.StartCommunication();
        }
        // When a connection is accepted, initialize state objects then start queuing data for sending (and get ready to receive)
        private static void ServerAcceptCallback(IAsyncResult ar)
        {
            connectionFound = true;

            Socket listener = (Socket)ar.AsyncState;
            Socket handler  = listener.EndAccept(ar);

            SendState ss = new SendState();

            ss.workSocket = handler;
            sendState     = ss;

            RecvState rs = new RecvState();

            rs.workSocket = handler;
            recvState     = rs;

            NetworkClock.StartCommunication();
        }