public async void StartListeningForIncomingConnection(IPAddress ipAddress = null, int port = 23000)
        {
            if (ipAddress == null)
            {
                ipAddress = IPAddress.Any;
            }

            if (port <= 0)
            {
                port = 23000;
            }

            _ipAddress = ipAddress;
            _port      = port;

            Debug.WriteLine($"IP Address: {_ipAddress} - Port: {_port}.");

            _tcpListener = new TcpListener(_ipAddress, _port);

            try
            {
                _tcpListener.Start();

                KeepRunning = true;

                while (KeepRunning)
                {
                    var returnedByAccept = await _tcpListener.AcceptTcpClientAsync();

                    _tcpClients.Add(returnedByAccept);

                    Debug.WriteLine($"Client connected successfully, count: {_tcpClients.Count} - {returnedByAccept.Client.RemoteEndPoint}.");

                    TakeCareOfTcpClient(returnedByAccept);

                    var eClientConnected = new ClientConnetedEventArgs(returnedByAccept.Client.RemoteEndPoint.ToString());

                    OnRaiseClienteConnectedEvent(eClientConnected);
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
            }
        }
        protected void OnRaiseClienteConnectedEvent(ClientConnetedEventArgs e)
        {
            var handler = RaiseClienteConnectedEvent;

            handler?.Invoke(this, e);
        }