簡體   English   中英

Indy TIdTCPClient ConnectTimout不起作用

[英]Indy TIdTCPClient ConnectTimout not working

我有一個TIdTCPClient,它試圖連接到不在線的主機。

更新:
在深入研究WINSOCK2之后,似乎確實是一個問題,具體取決於您的操作系統。 也許將來的版本中會有修復程序。 (有關更多詳細信息,請參閱此問題的評論)

設定:

  • 西雅圖德爾福10號酒店
  • Windows 7 64位
  • 印第10.6.2.5311

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM