Страница 1 из 1

Присвоить переменной время из интернета

Добавлено: 16 авг 2009, 13:50
AlexZZZ
Уважаемые коллеги, добрый день!
Задача в следующем: нужно определить. подключен ли компьютер к интернет-сети, и если да, то получить точное время (независящее от системного времени компьютера, которое может быть выставлено с ошибкой).
В сети много сайтов, показывающие точное время, даже с учётом часового пояса, но реализовано всё это на скриптах и сделать обычный веб-запрос в Excel не получается.
Может, кто сталкивался с подобной задачей и может дать дельный совет по реализации?

Re: Присвоить переменной время из интернета

Добавлено: 17 авг 2009, 14:45
mc-black
Прочтите RFC по протоколу SNTP (упрощенный сетевой протокол времени), более доступный для изучения по сравнению с NTP. Серверов синхронизации точного времени сейчас и правда предостаточно, можно найти open source программы на тему и сдуть реализацию.

Re: Присвоить переменной время из интернета

Добавлено: 17 авг 2009, 15:51
Aent

Re: Присвоить переменной время из интернета

Добавлено: 17 авг 2009, 21:58
AlexZZZ
Aent, спасибо за ссылки, только хотелось реализовать всё в Excel, а тут VB.net. Например, не работает такая конструкция:

Код: Выделить всё

  'connect
   With Winsock1
      If .State <> sckClosed Then .Close
      .RemoteHost = ComboBox1.Text
      .RemotePort = 37  'port 37 is the timserver port
      .Connect
   End With
И чем этот Winsock control (Winsock1), в Excel заменить, непонятно.

Re: Присвоить переменной время из интернета

Добавлено: 18 авг 2009, 05:29
EducatedFool
И чем этот Winsock control (Winsock1), в Excel заменить, непонятно.
Ничем не надо заменять. Его и используйте.

В Tools - References найдите и подключите Microsoft Winsock Control,
а также добавьте элемент управления Winsock на форму
(найти его можно среди дополнительных компонентов)

Изображение

Re: Присвоить переменной время из интернета

Добавлено: 18 авг 2009, 11:37
AlexZZZ
Ещё раз внимательно просмотрел весь список, но Microsoft WinSock Control у себя в списке не нашёл. Судя по приложенной картинке, требуется файл MSWINSCK.OCX. Доустановил офис, включая поддержку программирования для .NET, но этот файл не появился, как и Microsoft WinSock Control. Наверное, только установленого офиса недостаточно и нужно опять же устанавливать среду Visual Basic?

P/S: В интернет нашёл этот файл и поместил в папку WINDOWS\system32, но Microsoft WinSock Control в списке так и не появился. Видимо эту библиотеку нужно ещё зарегистрировать в системе. В общем, как представлю, какие проблемы могут быть для 60 пользовательских компьютеров, понимаю, что данный способ мне вряд-ли подойдёт, к сожалению. :(

А есть ли способ проще? Например, сайт, где веб-запрос таки можно выполнить? Чтобы это работало для большинства подключённых к интерент пользовательских компьютеров по умолчанию.

Re: Присвоить переменной время из интернета

Добавлено: 18 авг 2009, 16:59
EducatedFool
В интернет нашёл этот файл и поместил в папку WINDOWS\system32, но Microsoft WinSock Control в списке так и не появился. Видимо эту библиотеку нужно ещё зарегистрировать в системе
Да, надо регистрировать.
Но это делается очень просто: Пуск - Выполнить - regsvr32 MSWINSCK.OCX
В общем, как представлю, какие проблемы могут быть для 60 пользовательских компьютеров, понимаю, что данный способ мне вряд-ли подойдёт, к сожалению.
Да никаких проблем.
Моя надстройка тоже работает с сетью, и поэтому требует MSWINSCK.OCX
Более того, я в коде динамически создаю WinSock, поэтому, в моём случае, требуется ещё прописать в реестр лицензию для этого элемента управления.

Распространяю я свою надстройку в составе дистрибутива, выполненного с использованием программы InnoSetup.

В скрипт достаточно добавить одну строку, чтобы получившийся exe-файл (дистрибутив) скопировал файл в системную директорию, и зарегистрировал его в системеЖ
[Files]
Source: "MSFLXGRD.OCX"; DestDir: "{sys}" ; Flags: regserver sharedfile
Source: "MSWINSCK.OCX"; DestDir: "{sys}" ; Flags: regserver sharedfile
Source: "DNS_Database.DNS"; DestDir: "{app}" ; Flags: onlyifdoesntexist