![](/img/trans.png)
[英]How do I retrieve a complete HTTP response from a web server including response body using an Indy TIdTCPClient instance?
[英]Indy TIdTCPClient ConnectTimout not working
我有一個TIdTCPClient,它試圖連接到不在線的主機。
更新:
在深入研究WINSOCK2之后,似乎確實是一個問題,具體取決於您的操作系統。 也許將來的版本中會有修復程序。 (有關更多詳細信息,請參閱此問題的評論)
設定:
ConnectTimeout設置為5000 ms,因此我希望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;
此代碼的結果:
如果目標是防火牆並且啟用了防火牆,則必須禁用防火牆。
必須禁用適當的端口,而不是禁用防火牆。 但是,風險很高 。
因為它變得更具滲透性 。( Hack )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.