Пример #1
0
        public override void ListenString(Action <string> eventActivator)
        {
            if (_listenerServer == null)
            {
                return;
            }

            if (!_listenerServer.Active)
            {
                return;
            }

            try
            {
                // Пока есть ожидающие подключения
                while (_listenerServer.Pending())
                {
                    var client = _listenerServer.AcceptTcpClient();

                    var clientEntity = new ClientEntity(this, client, eventActivator);
                    clientEntity.OnProcessComplete += (x) => RemoveClient(x);
                    clients.Add(clientEntity);

                    // Запуск потока с обработкой клиента
                    var clientThread = new Thread(new ThreadStart(() => clientEntity.Process()));
                    clientEntity.SetThreadReference(clientThread);
                    clientThread.Start();
                }
            }
            catch (SocketException ex)
            {
                NetworkServiceLogger.Log($"Получение клиентов остановлено извне {ex.ErrorCode}");
            }

            return;
        }