我想从互联网上获取时间和日期
我使用了以下代码
IdDayTime1.ReadTimeout := 5000;
IdDayTime1.Host := 'www.time.windows.com';
IdDayTime1.Port := 37 ;
Label1.Caption := IdDayTime1.DayTimeStr;
但我得到:套接字错误#11004
这是什么,我做错了什么
我的互联网和其他东西都没问题
答案 0 :(得分:8)
DayTime 协议不是 NTP 协议。 DayTime 使用端口13,而不是37. 37由 Time 协议使用,该协议同样不是使用123(UDP)的NTP协议。我不知道time.windows.com是否支持 DayTime 和 Time 协议,从现在可靠的时间源获取时间的最常用的协议是 { {3}} ,以及更简单的兄弟SNTP,它取代了DayTime和Time协议。
答案 1 :(得分:2)
套接字错误11004表示“错误地址”。您需要删除 www。前缀,正确的地址是 time.windows.com 。
答案 2 :(得分:1)
以下是一些显示idSNTP组件使用的简单代码
var
SNTPClient: TIdSNTP;
begin
SNTPClient := TIdSNTP.Create(nil);
try
SNTPClient.Host := 'pool.ntp.org';
SNTPClient.SyncTime;
finally
SNTPClient.Free;
end;
end;
答案 3 :(得分:1)
如果您获得时间和日期使用Indy IdSNTP组件并设置:
host: time.windows.com
并在事件Timer1Timer(TTimer组件)上写:
Label1.Caption := DateToStr(IdSNTP1.DateTime)
+ ' - ' + TimeToStr(IdSNTP1.DateTime);
Label2.Caption := IdSNTP1.Host;
您在表单上看到(labe1,label2)现在日期和现在时间。因此,如果您设置时间同步
将IdSNTP1.SyncTime;
放入事件Timer1Timer。
答案 4 :(得分:0)
尝试将Indy ntp客户端组件与ntp pool.org服务器一起使用。如果您遇到任何问题,我会发布一些示例代码。