Beispiel #1
0
        /// <summary>
        /// Handle messaging with a single client.
        /// </summary>
        /// <param name="o"></param>
        static void ConnectionListener(object o)
        {
            int       id = (int)o;
            TcpClient client;

            lock (_lock) client = clients[id];

            NetworkStream stream = client.GetStream();

            byte[] buffer = new byte[client.ReceiveBufferSize];

            try
            {
                while (!exit)
                {
                    int bytesRead = stream.Read(buffer, 0, client.ReceiveBufferSize);

                    if (bytesRead == 0)
                    {
                        break;
                    }

                    ReceiveMessage(id, Message.FromBytes(buffer));
                }
            }
            catch (IOException e)
            {
                Libs.StatusMessage(e.Message, StatusType.FAILURE);
            }

            Libs.StatusMessage("Lost connection with the client.");
        }