public void BroadcastPacket(byte[] Packet, TcpSocket Exception = null)
 {
     lock (_syncLock) {
         foreach (var client in _connectedClients)
         {
             if (client != Exception)
             {
                 try { client.SendPacket(Packet); } catch { }
             }
         }
     }
 }
 private void TcpSocket_ClientStateChanged(TcpSocket sender, Exception Message, bool Connected)
 {
     lock (_syncLock) {
         if (Connected)
         {
             _connectedClients.Add(sender);
         }
         else
         {
             _connectedClients.Remove(sender);
         }
         ClientStateChanged?.Invoke(sender, Message, Connected);
     }
 }
        private void AcceptCallBack(IAsyncResult iar)
        {
            try {
                Socket    accepted  = _listener.EndAccept(iar);
                TcpSocket tcpSocket = new TcpSocket(accepted, MaxPacketSize);

                tcpSocket.ClientStateChanged     += TcpSocket_ClientStateChanged;
                tcpSocket.PacketReceived         += TcpSocket_PacketReceived;
                tcpSocket.ReceiveProgressChanged += TcpSocket_ReceiveProgressChanged;
                tcpSocket.SendProgressChanged    += TcpSocket_SendProgressChanged;
                tcpSocket.FloodDetected          += TcpSocket_FloodDetected;

                tcpSocket.Start();
                _listener.BeginAccept(AcceptCallBack, null);
            } catch {
                //MessageBox.Show(ex.Message + " \n\n [" + ex.StackTrace + "]");
            }
        }
 private void TcpSocket_PacketReceived(TcpSocket sender, PacketReceivedArgs PacketReceivedArgs)
 {
     PacketReceived?.Invoke(sender, PacketReceivedArgs);
 }
 private void TcpSocket_ReceiveProgressChanged(TcpSocket sender, int Received, int BytesToReceive)
 {
     ReceiveProgressChanged?.Invoke(sender, Received, BytesToReceive);
 }
 private void TcpSocket_FloodDetected(TcpSocket sender)
 {
     FloodDetected?.Invoke(sender);
 }
 private void TcpSocket_SendProgressChanged(TcpSocket sender, int Send)
 {
     SendProgressChanged?.Invoke(sender, Send);
 }