Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Получить время из Интернет


Автор: Molodec 1.3.2011, 14:19
Добрый день! 
Пожалуйста, помогите со следующей задачей:
Нужно написать десктопное приложение, защитой у которой будет то, что оно при запуске берет время, дату с сервера. Если соответствует промежутку 17:30 20.10.11 - 18:30 20.10.11. Тогда ее функции запускаются. Нет - значит нет.  
Именно интересует как и с каким сервером связаться чтобы получить в перемененную типа String либо Date время и дату. 
Смысл такой защиты - чтобы программа запускалась всего один раз. И пользователь не мог повлиять на это (Я не имею ввиду программиста с HEX-редактором)   smile 
Заранее спасибо за помощь. 

Автор: Snowy 1.3.2011, 14:35
Список публичных NTP серверов можно посмотреть http://www.pool.ntp.org/ru/.
Для получения/синхронизации времени используй TIdSNTP

Автор: Molodec 1.3.2011, 14:44
Не смог разобраться в них. А можно небольшой примерчик получении даты и времени? Или же там сложно?  smile 

Автор: Akella 3.3.2011, 13:50
Molodec, а что, поиск уже не комильфо?
http://forum.vingrad.ru/index.php?showtopic=163253&view=findpost&p=1194484

или религия запрещает?
http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80+TIdSNTP

Автор: Чучмек 3.3.2011, 14:54
Любой сервер передает дату в заголовках ответа.
Код

uses
  ....,winsock;


type
pin_addr=^in_addr;
var
 s:tsocket;
 addr:tsockaddr;
 str:pchar;
 rez:pchar;
 padr:PHostEnt;
 wd:wsadata;
begin
getmem(rez,1024);
wsastartup($101,wd);
s:=socket(af_inet,SOCK_STREAM,IPPROTO_IP);
addr.sin_family:=af_inet;
addr.sin_port:=htons(80);
padr:=gethostbyname('ya.ru');
if padr=nil then exit;
addr.sin_addr:=pin_addr(padr.h_addr_list^)^;
int64(addr.sin_zero):=0;
connect(s,addr,sizeof(addr));
str:= 'HEAD / HTTP/1.1'#13#10'Host: ya.ru'#13#10#13#10; 
send(s,str^,strlen(str),0);
recv(s,rez^,1024,0);
closesocket(s);
label1.Caption:=rez;
end;

В результате получим нечто типа
Цитата

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 03 Mar 2011 11:43:00 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
Cache-Control: no-cache,no-store,max-age=0,must-revalidate
Content-Length: 6262
Expires: Thu Mar  3 11:43:00 2011 GMT
Last-Modified: Thu Mar  3 11:43:00 2011 GMT
P3P: policyref="/w3c/p3p.xml", CP="NON DSP ADM DEV PSD IVDo OUR IND STP PHY PRE NAV UNI"
Set-Cookie: S=; path=/; expires=Mon, 05-Mar-2001 11:43:00 GMT
Set-Cookie: S=; domain=.ya.ru; path=/; expires=Mon, 05-Mar-2001 11:43:00 GMT
Set-Cookie: yandex_gid=141; domain=.ya.ru; path=/; expires=Sat, 02-Apr-2011 11:43:00 GMT
Set-Cookie: yp=1301744580.ygu.1; domain=.ya.ru; path=/; expires=Sun, 28-Feb-2021 11:43:00 GMT

Поле Date содержит текущее время GMT
Сервер может быть быть любым, важно только соответствие адреса в
padr:=gethostbyname('ya.ru'); и str:= 'HEAD / HTTP/1.1'#13#10'Host: ya.ru'#13#10#13#10; 

Автор: Molodec 9.3.2011, 09:18
Чучмек, спасибо. Попробую и отпишусь.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)