代码之家  ›  专栏  ›  技术社区  ›  Vibeeshan Mahadeva

在delphi中获取internet时间

  •  5
  • Vibeeshan Mahadeva  · 技术社区  · 15 年前

    我想从网上得到时间和日期

    我用了以下代码

    IdDayTime1.ReadTimeout := 5000;
    IdDayTime1.Host := 'www.time.windows.com';
    IdDayTime1.Port := 37     ;
    Label1.Caption := IdDayTime1.DayTimeStr;
    

    但我发现:套接字错误

    这是什么,我做错了什么

    我的网络和其他东西都可以

    5 回复  |  直到 15 年前
        1
  •  8
  •   user160694user160694    15 年前

    DayTime 协议不是 非关税壁垒 协议。 白天 使用端口13,而不是37。37被 Time 协议,同样,在非NTP协议中,它使用123(UDP)。我不知道time.windows.com是否支持 白天 时间 协议,现在最常用的从可靠时间源获取时间的协议是 NTP ,以及更简单的兄弟SNTP,它取代了白天和时间协议。

        2
  •  2
  •   Paul-Jan    15 年前

    套接字错误11004表示“地址错误”。你需要摆脱 www。 前缀,正确的地址是 time.windows.com网站 .

        3
  •  1
  •   Mike Taylor    15 年前

    下面是一些显示idSNTP组件使用情况的简单代码

    var
      SNTPClient: TIdSNTP;
    begin
      SNTPClient := TIdSNTP.Create(nil);
      try
        SNTPClient.Host := 'pool.ntp.org';
        SNTPClient.SyncTime;
      finally
        SNTPClient.Free;
      end;
    end;
    
        4
  •  1
  •   Andrew Barber Eric Lafortune    14 年前

    如果获得时间和日期,请使用Indy IdSNTP组件并设置: host: time.windows.com

    并在事件计时器1计时器(TTimer组件)上写入:

    Label1.Caption := DateToStr(IdSNTP1.DateTime)
       + ' - ' + TimeToStr(IdSNTP1.DateTime);
    Label2.Caption := IdSNTP1.Host;
    

    你可以在表格(labe1,label2)上看到日期和时间。所以如果你设定时间同步 放 IdSNTP1.SyncTime; 事件计时器1计时器。

        5
  •  0
  •   Mike Taylor    15 年前

    尝试将Indy ntp客户端组件与ntp pool.org服务器一起使用。对我有用如果你有任何困难,我会张贴一些示例代码。