Esempio n. 1
0
        static void Main(string[] args)
        {
            LoggerEvs.messageCame += logToConsole;
            /////////////////////////////////
            // Получить настройки сервера
            ServerProperties serverProps = new ServerProperties();

            serverProps.ReadXML();
            String propsMsg = String.Format("Настройки сервера: ServerName = {0}; IP = {1}; Port = {2};", serverProps.Fields.ServerName, IPAddress.Any.ToString(), serverProps.Fields.Port);

            LoggerEvs.writeLog(propsMsg);
            Console.Title = serverProps.Fields.ServerName;
            // Создать tcp-слушатель
            TcpListener myTcpListener = new TcpListener(IPAddress.Any, serverProps.Fields.Port);

            // Запустить слушатель
            myTcpListener.Start();
            // Текущий подключенный клиент
            TcpClient client;
            // Текущий поток клиента
            Thread clientTh;

            while (true)
            {
                // Принять новое подключение
                client = myTcpListener.AcceptTcpClient();
                LoggerEvs.writeLog("New client connected.");
                lock (locker)
                {
                    int id = globalClientsId;
                    clientTh = new Thread(delegate() { requestsProcessing(id); });
                    Client newClient = new Client(clientTh, client, globalClientsId);
                    // Добавить клиента в коллекцию
                    clients.Add(id, newClient);
                    // Создать новый поток
                    clients[id].Thread.Start();
                    globalClientsId++;
                }
            }
        }