Ejemplo n.º 1
0
 protected virtual void FireTooManyClientsEvent(Client client)
 {
     if (OnTooManyClients != null)
         OnTooManyClients(this, new ClientEventArgs { Client = client });
 }
Ejemplo n.º 2
0
 protected virtual void FireMessageReceivedEvent(Client client)
 {
     if (OnMessageReceived != null)
         OnMessageReceived(this, new ClientEventArgs { Client = client });
 }
Ejemplo n.º 3
0
        private void ClientAccepted(IAsyncResult iar)
        {
            try
            {
                if (_server == null || !_server.Server.IsBound) return;
                StartAcceptingClients();

                var listener = iar.AsyncState as TcpListener;
                if (listener == null)
                    return;
                TcpClient tcpClient = listener.EndAcceptTcpClient(iar);

                var client = new Client {TcpClient = tcpClient};
                if (_maxNumOfClients >= 0 && _clients.Count >= _maxNumOfClients)
                {
                    FireTooManyClientsEvent(client);
                    client.TcpClient.Close();

                    return;
                }
                _clients.Add(client);
                FireClientConnectedEvent(client);
                client.TcpClient.GetStream().BeginRead(new byte[0], 0, 0, ClientRead, client);
            }
            catch (Exception e)
            {
                Stop();
            }
        }
Ejemplo n.º 4
0
 protected virtual void FireClientDisconnectedEvent(Client client)
 {
     if (OnClientDisconnect != null)
         OnClientDisconnect(this, new ClientEventArgs { Client = client });
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Cleanly closes a client connection
 /// </summary>
 /// <param name="client">The client whose connection should be closed</param>
 public void CloseConnection(Client client)
 {
     if (client == null) return;
     client.TcpClient.Close();
     _clients.Remove(client);
     FireClientDisconnectedEvent(client);
 }