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); }