我有一个TIdTCPClient,它试图连接到不在线的主机。
更新
在深入了解WINSOCK2之后,这似乎确实是一个问题,这取决于您的操作系统。也许将来版本会有修复。
(有关详细信息,请参阅此问题的评论)
设定:
ConnectTimeout设置为5000毫秒,所以我希望在5秒后至少获得一个ConnectTimeout。但是在我当前的机器上接收超时需要20秒。
到目前为止,我看到ConnectionTimeout已正确处理,但在 TIdIOHandlerStack.ConnectClient 上,线程上有 WaitFor ,执行实际的连接尝试。 我认为这会导致延迟连接超时,但我不知道我能做些什么。任何想法?
代码:
procedure TForm1.btn1Click(Sender: TObject);
begin
try
Self.mmo1.Lines.Add(TimeToStr(now));
Self.idtcpclnt1.Host := '192.148.89.112';
Self.idtcpclnt1.Port := 9200;
Self.idtcpclnt1.Connect;
except on E: Exception do
Self.mmo1.Lines.Add(TimeToStr(now)+ ' : '+E.Message);
end;
end;
procedure TForm1.idtcpclnt1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: string);
begin
Self.mmo1.Lines.Add(TimeToStr(now)+ ' : ' +AStatusText);
end;
此代码的结果:
答案 0 :(得分:-2)
如果目标是防火墙并且启用了防火墙,则必须禁用防火墙。
您必须打开相应的端口,而不是禁用防火墙。但是,风险高。
因为它变得更强渗透性。( Hack )