コード例 #1
0
ファイル: Material.cs プロジェクト: Andry75/Tracker-p2p
        /// <summary>
        /// Реализует точку входа потока синхронизации с сервером
        /// </summary>
        private void ServerThreadFunction()
        {
Session:                   // Сессия коммуникации с сервером
            lock (started) // получаем монопольный доступ к флагу запуска
            {
                C_S_Exchange ce = null;
                try
                {
                    ce = new C_S_Exchange(server.ip, server.port); // создаем подключение к серверу


                    ce.Register(IdClient, Config.Port);                      // регистрируем сеанс на сервере
                    ce.GetMessage();                                         // ждем от сервера подтверждение
                    ce.GetClients(IdMaterial);                               // посылаем запрос выдать клиентов по материалу
                    ce.GetMessage();                                         // ждем подтверждение
                    ce.UpdateInfo(IdMaterial, Stat_Upload_, Stat_Download_); // отправляем статистику
                    ce.GetMessage();
                    Stat_Download += Stat_Download_; Stat_Upload += Stat_Upload_;
                    Stat_Upload_   = 0; Stat_Download_ = 0; // обнуляем статистику
                    ce.EndTrasaction();                     // завершам сессию общения с сервером
                    ce.GetMessage();                        // ожидаем подтверждение
                }
                catch (Exception)
                {
                    goto Session;
                }
                started = "yes";                    // флаг запуска выставляем
                Thread.Sleep(Config.UpdateTimeout); // отлаживаем поток на заданное значение таймаута обновления
            }
            goto Session;                           // когда прошел интервал, запускаем новую транзакцию
        }
コード例 #2
0
ファイル: Material.cs プロジェクト: yaroslavchuvaev/p2p
        /// <summary>
        /// Реализует точку входа потока синхронизации с сервером
        /// </summary>
        private void ServerThreadFunction()
        {
            Session: // Сессия коммуникации с сервером
            lock (started) // получаем монопольный доступ к флагу запуска
            {
                C_S_Exchange ce = null;
                try
                {
                    ce = new C_S_Exchange(server.ip, server.port); // создаем подключение к серверу

                    ce.Register(IdClient, Config.Port); // регистрируем сеанс на сервере
                    ce.GetMessage(); // ждем от сервера подтверждение
                    ce.GetClients(IdMaterial); // посылаем запрос выдать клиентов по материалу
                    ce.GetMessage(); // ждем подтверждение
                    ce.UpdateInfo(IdMaterial, Stat_Upload_, Stat_Download_); // отправляем статистику
                    ce.GetMessage();
                    Stat_Download += Stat_Download_; Stat_Upload += Stat_Upload_;
                    Stat_Upload_ = 0; Stat_Download_ = 0; // обнуляем статистику
                    ce.EndTrasaction(); // завершам сессию общения с сервером
                    ce.GetMessage(); // ожидаем подтверждение

                }
                catch (Exception)
                {
                    goto Session;
                }
                started = "yes";// флаг запуска выставляем
                Thread.Sleep(Config.UpdateTimeout); // отлаживаем поток на заданное значение таймаута обновления

            }
            goto Session; // когда прошел интервал, запускаем новую транзакцию
        }