/// <summary>
        /// Callback-Methode zum Empfangen von Nachrichten.
        /// </summary>
        /// <param name="result"></param>
        private void readCallback(IAsyncResult result)
        {
            // Client von dem Nachricht erhalten wurde wird als result übergeben.
            Client client = result.AsyncState as Client;

            try
            {
                // Prüfung ob Client valide und verbunden ist.
                if (client == null) return;
                if (client.Tcpclient.Connected)
                {
                    // Stream holen und Lesevorgang abschließen.
                    NetworkStream networkStream = client.Networkstream;
                    int read = networkStream.EndRead(result);

                    // Falls 0 bytes gesendet wurden, wird der Client entfernt.
                    if (read == 0)
                    {
                        lock (this.clients)
                        {
                            this.clients.Remove(client);

                            // ClientDisconnected Event ausführen.
                            OnClientDisconnected(new ClientDisconnectedEventArgs(client.Tcpclient));
                            return;
                        }
                    }

                    // Tatsächlich empfangene Bytes in neues Array kopieren.
                    byte[] actualBytes = new byte[read];
                    Array.Copy(client.Buffer, actualBytes, read);


                    // Neuen Lesevorgang mit Clienten starten.
                    client.ClearBuffer();
                    networkStream.BeginRead(client.Buffer, 0, client.Buffer.Length, readCallback, client);
                    // PacketReceived Event ausführen.
                    OnPacketReceived(new PacketReceivedEventArgs(client.Tcpclient, actualBytes, read));
                }
            }
            catch (System.IO.IOException)
            {
                // Bei IO-Fehlern den Client entfernen.
                if (client != null)
                {
                    lock (this.clients)
                    {
                        this.clients.Remove(client);
                    }
                    OnClientDisconnected(new ClientDisconnectedEventArgs(client.Tcpclient));
                }
            }
        }