自打服务器上获得网络时的几乎种植方法

自服务器上收获网络时间之几种植方式

  1. 用Net Time \\server
  2. NT平台用Win32 API函数:NetRemoteTOD
  3. 用文件的开创时间
    当服务器的共享文件夹下创造新文件,取新文件的创造时间。
  4. 所以HTTP协议头,有服务器的时日
  5. 下Telnet,取返回值
    Telnet Server 13
  6. 下数据库
    a) Oracle: select sysdate from dual
    b) Informix: select current() from systables
    c) Sql Server: select getdate()
  7. 使用DCOM Server
    缔造一个收获服务器时间的DCOM Server,在客户端调用

活动与Internet时间服务器同步

  Windows默认的第二单Internet时间服务器:time.windows.com和time.nist.gov大家肯定经常用,反正在自身此是隔三差五时间共同失败,大概因为服务器是海外的,同步的机械而大多,服务器太忙碌了咔嚓。
  
  下面这个IP是中国国家授时中心之Internet时间服务器地址,用它来顶替time.windows.com和time.nist.gov服务器,同步时间抢。同步成功之机大大加。

210.72.145.44
世家不妨尝试。

中国国家授时中心:
http://www.ntsc.ac.cn/


获得指定IP或服务器时间
//方法一:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, StdCtrls;
type
TTODInfo = record
ElapsedTime: Integer; {number of seconds since 00:00:00 January 1,
1970}
Milliseconds: Integer; {number of milliseconds since last system
reset}
Hours: Integer; {current hour (0-23)}
Minutes: Integer; {current minute (0-59)}
Seconds: Integer; {current second (0-59)}
Hunds: Integer; {current hundredth of a second (0-99)}
TimeZone: Integer; {time against GMT in minutes}
{west of Greenwich gives positive, east negative values}
{value of -1 means undefined time zone}
Interval: Integer; {clock tick interval in ten-thousandth of a second
(0.0001 s)}
Day: Integer; {day of the month (1-31)}
Month: Integer; {month of the year (1-12)}
Year: Integer; {year}
Weekday: Integer; {day of the week (0-6) 0 = Sunday, 1 = Monday etc.}
end;
PTODInfo = ^TTODInfo;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const
netapi32 = ‘netapi32.dll’;
function NetApiBufferFree(Buffer: Pointer): Integer; stdcall;
function NetRemoteTOD(UNCServerName: PWideChar; Info: Pointer): Integer;
stdcall;
function ServerTime(const UNCServer: string; var Stamp: TDateTime):
Integer;
implementation
{$R *.dfm}
function NetApiBufferFree; external netapi32 name ‘NetApiBufferFree’;
function NetRemoteTOD; external netapi32 name ‘NetRemoteTOD’;
function ServerTime(const UNCServer: string; var Stamp: TDateTime):
Integer;
var
ServerName: PWideChar;
tod: PTODInfo;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
GetMem(ServerName, (Length(UNCServer) + 1) * SizeOf(WideChar));
try
ServerName := StringToWideChar(UNCServer, ServerName, Length(UNCServer)

  • 1);
    Result := NetRemoteTOD(ServerName, @tod);
    if Result = 0 then
    begin
    try
    Year := tod^.Year;
    Month := tod^.Month;
    Day := tod^.Day;
    Hour := tod^.Hours;
    Min := tod^.Minutes;
    Sec := tod^.Seconds;
    MSec := tod^.Hunds * 10;
    if tod^.TimeZone = -1 then {undefined timezone}
    Stamp := EncodeDate(Year, Month, Day) +
    EncodeTime(Hour, Min, Sec, MSec)
    else
    Stamp := EncodeDate(Year, Month, Day) +
    EncodeTime(Hour, Min, Sec, MSec) – (tod^.TimeZone / 1440);
    finally
    NetApiBufferFree(tod);
    end;
    end;
    finally
    FreeMem(ServerName);
    end;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
    t: TDateTime;
    begin
    ServerTime(‘192.168.192.187’, t);
    label1.Caption := DateTimeToStr(t);
    end;
    end.

    type
    TIME_OF_DAY_INFO = record //api 傳回的資料格式
    tod_elapsedt : DWord;
    tod_msecs : DWord;
    tod_hours : DWord;
    tod_mins : DWord;
    tod_secs : DWord;
    tod_hunds : DWord;
    tod_timezone : LongInt;
    tod_tinterval : DWord;
    tod_day : DWord;
    tod_month : DWord;
    tod_year : DWord;
    tod_weekday : DWord;
    end;
    PTIME_OF_DAY_INFO = ^TIME_OF_DAY_INFO;

LPBYTE = ^Byte;
NET_API_STATUS = DWord;
//..
function NetRemoteTOD(HostName: PWideChar; Buffer: LPBYTE):
NET_API_STATUS;
stdcall; external ‘netapi32.dll’ name ‘NetRemoteTOD’; //宣告在
netapi32.dll 下的 NetRemoteTOD api
//..
function GetRemoteTOD(Host: WideString; TODInfo: LPBYTE): Boolean;
begin
Result := (NetRemoteTOD(pWideChar(Host), TODInfo) = 0);
end;

function GetRemoteDateTime(Host: WideString): TDateTime;
var
TOD : PTIME_OF_DAY_INFO;
begin
if NetRemoteTOD(pWideChar(Host), @TOD) = 0 then
Result := EncodeDate(TOD^.tod_year, TOD^.tod_month, TOD^.tod_day)

EncodeTime(TOD^.tod_hours, TOD^.tod_mins, TOD^.tod_secs,
TOD^.tod_hunds * 10) – TOD^.tod_timezone / 60 /
24
else
Result := 0;
end;
//
procedure TForm1.Button2Click(Sender: TObject);
var
t: TDatetime;
begin
t:=GetRemoteDateTime(‘\\192.168.6.101’); // 主機前如果加 \\, 而且要优先
trust 過
showmessage(formatdatetime(‘yyyy/mm/dd hh:nn:ss’,t));
end;
方法二:
假設您的伺服器上发裝MS SQL:

function GetServerDate: TDateTime;
var
aqry: TQuery;
begin
aqry := TQuery.Create(nil);
try
aqry.DatabaseName := ‘DB’;
aqry.Close;
aqry.SQL.Clear;
aqry.SQL.Add(‘Select GETDATE() DBDate’);
aqry.Open;
Result := aqry.FieldByName(‘DBDate’).AsDateTime;
finally
FreeAndNil(aqry);
end;
end;
假設您的伺服器上产生裝Oracle:

function GetServerDate: TDateTime;
var
aqry: TQuery;
begin
aqry := TQuery.Create(nil);
try
aqry.DatabaseName := ‘DB’;
aqry.Close;
aqry.SQL.Clear;
aqry.SQL.Add(‘Select SYSDATE DBDate From DUAL’);
aqry.Open;
Result := aqry.FieldByName(‘DBDate’).AsDateTime;
finally
FreeAndNil(aqry);
end;
end;

参考
http://hi.baidu.com/lobtao/item/843aaf0bd08b44803d42e278


北斗时间频率技术有限公司是一模一样家顾让时频率技术工程使用的创新型专业化技术企业。致力为北斗(Compass)/GPS/GLONASS/Galileo导航卫星时间频率技术、时间频率精密测量控制技能、IEEE1588大网迷你时间共同(PTP)技术、时间频率统一联合技术,以及高精度时间频率信号产生、保持、无缝(无损)切换与分配技术之钻研与产品开发,并从事为提供专业化高端时间频率系统缓解方案和技术服务。

柜具有同样开销工程经验丰富、专业技术精湛的岁月频率专家和中青年科技人才团队,曾插手了国家北斗导航卫星地面监测站时频分系统研制建设任务、我国独立自主星载原子钟的研制任务、我国有部队气象卫星地面监测站时频分系统建设、我国有部队侦察卫星地面站时频分系统建设、总装备部“高精密时间距离测量技术”和“高精密频率测量控制技能”专项等国家级重点工程。公司有时空频率技术世界的基本上宗国家发明专利,并成功应用在差不多只产品多样被,广泛应用于地面、车载、船载、机载等不同条件。专业的时频技术水平和工程控制能力在国内处于领先水平。我们的正规技巧团队要着同您合作,为卿提供一流的流年频率系统缓解方案和技术服务。

北斗时间频率技术有限公司劳动用户包括总参、总装、海、空军、二炮等国防重点单位跟中国航天科技集团、中国航天科工集团、中国飞行试验研究院、中国航空工业总公司、中电集团公司、中科院上海天文台、中科院国家授时中心、中科院武汉测地所、物数所、国家气象局、海洋局、国家计量院、国家电网、中国移动、中国联通、中央电视台等国家重大部委集团等。应用领域涵及航天航空、国防军事、电力系统、科研院所、计量及校准、广播电视、电信、金融、交通等。产品质量可靠、技术指标先进,深得用户好评。

北斗时间频率技术有限公司研发的时日频率产品都包含机架式、台式、便携式、手持式、卡式等多种产品类型。主要产品类别有GPS授时系统、北斗
授时系、GPS时码发生器(GPS时码器)、北斗时码发生器(北斗时码器)、GPS授时卡(GPS时统卡/时码卡)、北斗授时咬、PCI/CPCI时码卡、IRIG-B码编码解码卡、NTP网络时间服务器、IEEE1588
(PTP)精密时钟、GPS北斗同步时钟、GPS铷原子钟(GPS铷原子频标)、北斗铷原子钟(北斗铷原子频标)、频率分配放大器、频标无缝切换器、脉冲分配器、IRIG-B时码分配器、高精度时间间隔计数器、高精度频率计、比相仪等。

北斗时间频率技术有限公司:www.xbd-time.com

发表评论

电子邮件地址不会被公开。 必填项已用*标注