Ver Mensaje Individual
  #12  
Antiguo 07-12-2024
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Reputación: 2
delphiGar Va por buen camino
En delphi con Indy tiene cuatro protocolos distintos para hacerlo de una manera mucho mas sencilla y ademas te sincroniza la hora con el PC.

Os pongo un ejemplo de dos de ellos con TidTimeUDP y TidSNTP:

Código Delphi [-]
unit main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdSNTP, IdBaseComponent, IdComponent,
  IdUDPBase, IdUDPClient, IdTimeUDP, Vcl.StdCtrls;

type
  TForm5 = class(TForm)
    btnRespuesta: TButton;
    edProtocoloSNTP: TEdit;
    edHoraPTime: TEdit;
    procedure btnRespuestaClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    function obtenerFechaHoraProtocoloTiempo( server: string; sincronizarHora: Boolean = False ): TDateTime;
    function obtenerFechaHoraProtocoloSNTP( server: string; sincronizarHora: Boolean = False ): TDateTime;
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.btnRespuestaClick(Sender: TObject);
begin
  // Pedimos hora al servidor y sincronizamos protocolo de Tiempo
  edHoraPTime.Text := DateTimeToStr( obtenerFechaHoraProtocoloTiempo( 'hora.roa.es',  True ) );
  // Pedimos hora al servidor y no sincronixamos hora protocolo SNTP
  edProtocoloSNTP.Text := DateTimeToStr( obtenerFechaHoraProtocoloSNTP( 'hora.roa.es' ) );
end;

function TForm5.obtenerFechaHoraProtocoloSNTP(server: string;  sincronizarHora: Boolean ): TDateTime;
var
  serverSNTP: TIdSNTP;
begin

  serverSNTP := TIdSNTP.Create( Self );
  serverSNTP.Host := server;
  Result := serverSNTP.DateTime;
  if ( sincronizarHora ) then
    serverSNTP.SyncTime;
 
  serverSNTP.Free;

end;

function TForm5.obtenerFechaHoraProtocoloTiempo(server: string;  sincronizarHora: Boolean  ): TDateTime;
var
  serverITimeUDP: TIdTimeUDP;
begin

  serverITimeUDP := TIdTimeUDP.Create( Self );
  serverITimeUDP.Host := server;
  Result:= serverITimeUDP.DateTime;
  if ( sincronizarHora ) then
    serverITimeUDP.SyncTime;

 serverITimeUDP.Free

end;

end.

Última edición por delphiGar fecha: 07-12-2024 a las 14:57:37.
Responder Con Cita