ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / Получение текущей даты со стороны сервера.

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Получение текущей даты со стороны сервера.
 
Очень давно интересует данный Вопрос, вот только сейчас решил его задать:
Возможно ли получение текущей даты и веремени сервера?
 
Цитата
Саак Шахламджян пишет:
Очень давно интересует данный Вопрос, вот только сейчас решил его задать:
Возможно ли получение текущей даты и веремени сервера?


net time /?
 
А для чего? Если есть сервер времени в сети и все станции с него синхронизируются, то какой смысл?
Если надо использовать в программе, то можно использовать через __RUN()
net time \\192.168.0.1 > servertime.txt

Получим файл, из которого можно взять значение.
С уважением,
Ильин Евгений
 
Цитата
itman пишет:
А для чего? Если есть сервер времени в сети и все станции с него синхронизируются, то какой смысл?
Если надо использовать в программе, то можно использовать через __RUN()
net time \\192.168.0.1 > servertime.txt

Получим файл, из которого можно взять значение.

В Вашем Вопросе есть сразу и ответ на него. Ключевое слово "Если". У нас не домен....
А net time что-то у меня не пошел. Вообще не компилируется ни в каком виде.
Может быть команда как-нибудь по-другому выглядит?
 
Код
__run("start /b net time \\192.168.0.1 >> s:\servertime.txt")

Отлично работает.
С уважением,
Ильин Евгений
 
Цитата
itman пишет:
Код __run("start /b net time \\192.168.0.1 >> s:\servertime.txt")
Отлично работает.

Да, так прекрасно работает!!!
Я и не догадался, что нужно вызвать командную строку windows и там уже использовать команду net...

Хотя, интереснее было бы средствами Б-5 такую возможность иметь...
Изменено: Саак Шахламджян - 13.02.2009 13:40:23
 
Вот кусок моего кода:
Код
__run("start /b net time \\Server-New >> "+sFPAth)
nHandle:=FOpen(sFpath)
if !(nHandle==-1)
   if (FRead(nHandle, @cBuffer, 100)>0)


У меня строка не читается... Читается нуль байт!
Если же "остановить" программу(поставить точку останова, подождать и снова запустить) или идти под отладчиком, то всё отлично!!!!
Я не знаю с чем это связано!
Предполагаю лишь, что данные в файл еще не успели записать, а Б-5 уже бежит дальше, или еще что-нибудь.
Вот почему я и говорил, что лучше бы средствами Б-5 определять дату на сервере!!!

Как быть теперь?
Нет ли функции Wait(nMiliseconds) в Б-5??? Которая, к стати во многих местах могла бы быть полезна!!!!
 
Поставил небольшой эксперимент!!!
Код
.....
Local cBuffer:=Space(100)
Local sFPAth:=B6_TMP_PATH +"st"+StepPlus(),nHandle
__run("start /b net time \\Server-New >> "+sFPAth)
COPY FILE (sFpath) to (sFpath+"1") //копируем получившийся файл, дописывая "1" в имя файла
COPY FILE (sFpath) to (sFpath+"2")//еще раз копируем получившийся файл, дописывая "2" в имя файла
sFpath:=sFpath+"1"
nHandle:=FOpen(sFpath)
if !(nHandle==-1)
fseek(nHandle,0,0)
FRead(nHandle, @cBuffer, 100)
.....


Представьте себе файл 1 и файл 2 оказываются пустыми!!!!!
Тогда я немного подумал и решил, раз нет функции wait(), то было бы глупо всякими while'ами "забивать" процессор ради ожидания, и я пошел таким путем:


Код
.......
Local cBuffer:=Space(100)
Local sFPAth:=B6_TMP_PATH +"1\"+"st"+StepPlus(),nHandle,nI
__run("start /b net time \\Server-New >> "+sFPAth)

For nI= 1 to 500
  COPY FILE (sFpath) to (sFpath+Var2Char(nI))
NEXT


И, "О, ЧУДО!!!" Начиная с файла № 101 (101й копии)[или № 167 или еще какого-нибудь, всегда по-разному] файл наконец-то оказывался непустым!!!!!
"Меня терзают смутные сомненья..." либо __run() не дожидается полного окончания исполнения внешнего приложения. Либо команда net time \\Server-New >> "+sFPAth запускает еще что-то, что уже исполняется во вне команды net...
Путь решения с 500 кратным копированием файла кажется маразматичным. Очень бы хотелось команду WAIT()...
 
Функции wait() я так понял не дождусь ни от кого. Разработчики её похоже спрятали от глаз простых смертных. Я пошёл другим путем.
Написал VBS скриптик такого содержания:
Код
Wscript.Sleep(10)


А в коде плагина дописал строку-задержку, запускающую скрипт:
Код
__run("c:\1.vbs")


В общем-то тоже маразм, должен сказать, но всё же лучше чем ничего.
осталось закинуть файл на сервер, поменять путь запуска...

P.S. Как ни странно более чем 100кратное копирование файла заменилось 10 миллисекундной задержкой и всё прекрасно работает...

P.P.S А вообще сейчас до меня дошло... Если написать так:
Код
__run("net time \\Server-New >> "+sFPAth)

То никаких задержек ставить не надо, потому как вариант, предложенный itman'ом
Цитата
itman пишет:
Код __run("start /b net time \\192.168.0.1 >> s:\servertime.txt")

На самом деле делает следующее:
Сначала запускает командную строку, которая в свою очередь запускает команду net, которая исполняется уже во вне запущенной командной строки. Командная строка завершается, не дожидаясь результатов net(записи в файл)=> не дожидается этого и __run(), оттого у меня и были проблемы....
Изменено: Саак Шахламджян - 18.02.2009 10:24:21
 
А не проще настроить службу времени в локальной сети?

P.S. Если бы на файл-сервере стоял MySQL-сервер, Вопрос решался бы намного проще.
С уважением,
Ильин Евгений
 
Цитата
itman пишет:
А не проще настроить службу времени в локальной сети?

P.S. Если бы на файл-сервере стоял MySQL-сервер, Вопрос решался бы намного проще.

Для этого было бы неплохо, для начала, сделать домен!!!
У нас не домен, как говорилось выше...
Изменено: Саак Шахламджян - 18.02.2009 11:27:00
Страницы: 1
Читают тему (гостей: 1)