我需要使用TCP / IP连接连接到本地网络上的设备。 当我使用tidtcpclient时,所有工作都很好,除了一件事之外:

如果连接不可用,在获得超时之前需要大约18-20秒。 无论我设置有哪些值,属性ConnectTimeout都没有效果。它始终在超时前采取相同的时间。

这个答案提到了超时的延迟时间,我是想知道这是否与Indy组件有关?

我必须了解连接是否无法快速建立,让我们最多在1秒内说。

有没有办法使用Indy执行此操作,或者我需要使用不同的组件/不同的方法?

(我正在使用delphi 2009附带的Indy 10版本)

编辑
我按照说明将Indy升级到中的最新版本这篇文章

仍然是相同的,它现在一直需要22秒,直到tcpclient.connect返回返回时没有连接。 ConnectTimeout和/或ReadTimeout似乎对此没有影响。

其他提示

ConnectTimeout为2010和XE正确工作。也许您可以将您的Indy版本更新到最新(免费)。我有一个“快速检查”连接的功能,只是为了检查设备的可用性,并且这些超时为5秒,没有问题(在2010和XE中)。

使用默认的TCP客户端连接超时(未具体设置)和1秒的读取超时,使用Delphi 2010和最新的Indy版本,本地连接(使用localhost作为主机名)在1秒内超出时间。所以这绝对不是Delphi / Indy问题。顺便说一句,这给了我一个Eidsocketerror(“套接字错误#10061连接拒绝”)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top