4

所以我使用 tidhttp 来发出帖子请求。当我尝试设置 connectTimeout 时,它没有任何效果。在我得到异常之前,我仍然等待约 5 秒。提前致谢!

4

1 回答 1

8

如果您要连接到主机名而不是 IP 地址,则必须通过 DNS 查找将主机名解析为 IP,这可能需要一些时间,尤其是在主机名尚未被操作系统缓存的情况下。ConnectTimeout 属性不考虑该时间。

此外,当 ConnectTimeout 不为零时,或者如果正在使用 TIdAntiFreeze,Indy 必须使用内部工作线程来执行对服务器的实际套接字 API connect() 调用。启动一个新线程可能需要一些时间,具体取决于当时可用的系统资源。ConnectTimeout 也不考虑那段时间。

ConnectTimeout 的当前实现仅适用于实际的套接字 API connect() 调用本身,而不适用于达到该点所需的任何额外工作。因此,如果您设置了 5 秒的 ConnectTimeout 值,则可能会在 TIdTCPClient.Connect() 退出之前等待超过 5 秒的时间。

于 2010-11-25T00:44:35.450 回答