使用TIdTimeUDP和TIdTimeUDPServer同步计算机时间。发现二者不能通讯。TIdTimeUDP使用SyncTime方法一直False,而直接读取时间IdTimeUDP.datetime一直是1889年。
版本: Delphi2010 + Indy10.5.5
procedure Tserver.FormCreate(Sender: TObject);
begin
IdTimeUDPServer1.DefaultPort := 12345;
try
IdTimeUDPServer1.Active := True;
except
ShowMessage('not');
end; Memo1.Clear;
end;
客户端:
procedure TClientForm.Button1Click(Sender: TObject);
begin
if IdTimeUDP1.Active then
IdTimeUDP1.Active := False; IdTimeUDP1.Host := Edit1.Text;
IdTimeUDP1.Port := 12345;
// IdTimeUDP1.BoundIP := '127.0.0.1';
//IdTimeUDP1.BoundPort := 12344;
IdTimeUDP1.Active := True;
IdTimeUDP1.OpenProxy; if IdTimeUDP1.SyncTime then //不使用这个,返回1899年
Edit2.Text := DateTimeToStr(IdTimeUDP1.DateTime)
else
Edit2.Text := 'error';
end;procedure TClientForm.FormShow(Sender: TObject);
begin
Edit1.Text := '127.0.0.1';
Edit2.Text := '';
Memo1.Clear;
end;
这样简单的代码,在同一台电脑或者两台电脑测试都不成功。
如果采用TIdTime和TIDTimeServer,则很正常。
不知道问题何在。于是又使用D7+Indy9在同一个电脑测试。还是这样的代码,却很成功。在网上查找了很久,不知道原因何在?
请指点。通信Delphi2010
版本: Delphi2010 + Indy10.5.5
procedure Tserver.FormCreate(Sender: TObject);
begin
IdTimeUDPServer1.DefaultPort := 12345;
try
IdTimeUDPServer1.Active := True;
except
ShowMessage('not');
end; Memo1.Clear;
end;
客户端:
procedure TClientForm.Button1Click(Sender: TObject);
begin
if IdTimeUDP1.Active then
IdTimeUDP1.Active := False; IdTimeUDP1.Host := Edit1.Text;
IdTimeUDP1.Port := 12345;
// IdTimeUDP1.BoundIP := '127.0.0.1';
//IdTimeUDP1.BoundPort := 12344;
IdTimeUDP1.Active := True;
IdTimeUDP1.OpenProxy; if IdTimeUDP1.SyncTime then //不使用这个,返回1899年
Edit2.Text := DateTimeToStr(IdTimeUDP1.DateTime)
else
Edit2.Text := 'error';
end;procedure TClientForm.FormShow(Sender: TObject);
begin
Edit1.Text := '127.0.0.1';
Edit2.Text := '';
Memo1.Clear;
end;
这样简单的代码,在同一台电脑或者两台电脑测试都不成功。
如果采用TIdTime和TIDTimeServer,则很正常。
不知道问题何在。于是又使用D7+Indy9在同一个电脑测试。还是这样的代码,却很成功。在网上查找了很久,不知道原因何在?
请指点。通信Delphi2010
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货