|
97 / 4 / 0
Регистрация: 09.05.2015
Сообщений: 70
|
||||||
Получение текущего значения мирового времени через службы NTP08.01.2017, 19:20. Показов 11040. Ответов 8
Привет!
Я использую приведенный ниже программный код для получения текущего значения мирового времени через службы NTP. В данной реализации у меня осуществляется доступ через сокеты по UDP-протоколу к серверу "time.windows.com". Иногда из-за перегрузки сервера возникают значительные задержки, и мне необходимо переключиться на получение времени с других серверов "pool.ntp.org" или "time-a.nist.gov". Любой из этих серверов в различное время суток дает различный тайм-аут, поэтому я не могу отдать какому-нибудь из них предпочтение. Код работает нормально, но мне нужно предусмотреть, чтобы в случае истечения таймаута socket.ReceiveTimeout = 3000 по одному из серверов, алгоритм начинал "стучаться" к другому серверу, третьему серверу. В случае всех неудачных 3-х попыток необходимо, чтобы в соответствующем методе возвращалось значение DateTime networkDateTime = (new DateTime(1900, 1, 1, 0, 0, 0, DateTimeKind.Utc)), которое будет рассматриваться как индикатор неудачи в попытках получить текущее значение мирового времени через службы NTP. У меня возник вопрос, заключающийся в том, как необходимо видоизменить существующий код, чтобы осуществить данную процедуру? Заранее благодарна за помощь в решении данного вопроса.
0
|
||||||
| 08.01.2017, 19:20 | |
|
Ответы с готовыми решениями:
8
(мобильное приложение) Определение координат GPS и получение текущего времени с сервера времени интернет
|
|
97 / 4 / 0
Регистрация: 09.05.2015
Сообщений: 70
|
||||||
| 10.01.2017, 10:46 [ТС] | ||||||
|
Я попытаюсь переформулировать вопрос.
Каким образом можно обработать событие, которое наступает в результате выполнения следующего оператора из приведенного выше программного кода?
0
|
||||||
|
Администратор
|
||||||
| 18.01.2017, 22:12 | ||||||
|
InessaSuper, если модифицировать метод GetNetworkTime чтобы он принимал имя сервера, то можно сделать так:
0
|
||||||
|
97 / 4 / 0
Регистрация: 09.05.2015
Сообщений: 70
|
|
| 05.02.2017, 11:35 [ТС] | |
|
Скажите, каким образом можно модифицировать работу, приведенного выше кода, чтобы сделать его совместимым с фреймворком .NET 2.0?
Мне очень важна эта совместимость. Дело в том, что во фреймворке .NET 2.0 нет возможности использовать класс System.Threading.Task. Также нет возможности использовать лямбда-выражения. Каким образом будет выглядеть асинхронный вызов метода GetNetworkTime для получения ответа от самого быстрого сервера службы точного времени в этом случае? Как нужно будет изменить сигнатуру метода GetNetworkTime и само его содержимое, чтобы сделать его доступным для корректного вызова?
1
|
|
|
Администратор
|
||||||
| 31.03.2017, 16:38 | ||||||
|
InessaSuper, наверное ответ уже не актуален, но вот решение для .NET 2
Кликните здесь для просмотра всего текста
1
|
||||||
|
97 / 4 / 0
Регистрация: 09.05.2015
Сообщений: 70
|
||||||||||||||||||||||||||||||||||||
| 04.04.2017, 12:16 [ТС] | ||||||||||||||||||||||||||||||||||||
|
Эта тема для меня продолжает быть актуальной.
Спасибо за то, что откликнулись! А я уже было совсем расстроилась, что не могу сдвинуть этот свой проект с мёртвой точки. Мне удалось запустить приведенный выше код. Только пришлось заменить строчку
error CS1061: Type `int' does not contain a definition for `Dump' and no extension method `Dump' of type `int' could be found (are you missing a using directive or an assembly reference?) Скажите, а каким образом мне нужно видоизменить этот код для .NET 2, чтобы учесть следующий нюанс. Я должна предусмотреть в своём коде случай, когда ни один из перечисленных в списке time-серверов не откликнулся в течении заданного тайм-аута. Я выделила в отдельный метод тот участок кода, который отвечает за возвращение значения от наиболее быстро откликнувшегося тайм-сервера, чтобы реализовать этот подход (см. видоизменённый код ниже). В качестве возвращаемого значения из этого метода, в случае неудачной попытки получения текущего времени, я предполагаю возвращать следующее значение, как признак того, что не удалось достучаться до тайм-серверов:
P.S. Я просто не могу понять как обработать тот случай, когда в приведенной ниже строчке из этого кода не удаётся дождаться ни одного из waitHandles.
Мне же нужно, чтобы по истечению 3000 миллисекунд, которые указаны в методе NtpClient.GetNetworkTime() при работе с сокетами (socket.ReceiveTimeout = 3000) происходило следующее. В случае отсутствия сетевого соединения и истечения этого тайм-аута для всех перечисленных тайм-серверов на выходе из метода Main.RecieveNetworkTime() необходимо, чтобы происходило возвращение значения:
======================================== ========================== У меня возникла идея с возможным решением описанной мною выше задачи. Но я не знаю каким образом её можно корректно реализовать в данном случае. Для решения этой задачи необходимо по достижению socket.ReceiveTimeout = 3000 генерировать какое-то своё собственное специализированное исключение (например, с именем NtpServerTimeoutException). Это своё сгенерированное исключение NtpServerTimeoutException необходимо затем как-то пробрасывать вверх по цепочке обработки исключений. И в самом конце обработки необходимо сделать проверку на то, совпадает ли имя отловленного исключения с именем сгенерированного на начальном этапе исключения NtpServerTimeoutException. Если причиной отловленного исключения служит исключение NtpServerTimeoutException, то в методе RecieveNetworkTime() необходимо возвращать значение:
Скажите, каким образом должен выглядеть код с реализацией этого подхода в данном случае?
0
|
||||||||||||||||||||||||||||||||||||
|
Администратор
|
|
| 05.04.2017, 13:48 | |
|
InessaSuper, начиная с .NET 3.5 есть перегрузка WaitAny с таймаутом. Есть возможность использовать .NET 3.5?
1
|
|
|
97 / 4 / 0
Регистрация: 09.05.2015
Сообщений: 70
|
|
| 05.04.2017, 22:20 [ТС] | |
|
Я попробовала использовать эту перегрузку метода WaitAny c тайм-аутом в своём проекте под .NET 2, и она заработала!
Спасибо.
0
|
|
| 05.04.2017, 22:20 | |
|
Помогаю со студенческими работами здесь
9
Получение текущего значения переменной семафора Получение текущего значения из Html.Dropdownlist Получение текущего значения ячейки gridview в другой форме
Сохранение в файл значения секунд текущего времени Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|