Delphi Tidhttp.connectTimeout不工作!

Delphi Tidhttp.connectTimeout不工作!,delphi,indy10,Delphi,Indy10,因此,我使用tidhttp发出post请求。当我尝试设置connectTimeout时,无论是什么时间段,它都没有效果。我仍然要等待~5秒才能得到异常。 提前谢谢 如果要连接到主机名而不是IP地址,则必须通过DNS查找将主机名解析为IP,这可能需要时间,尤其是在操作系统尚未缓存主机名的情况下。ConnectTimeout属性不考虑该时间 此外,当ConnectTimeout不为零时,或者如果正在使用TidAntizone,Indy必须使用内部工作线程来执行对服务器的实际套接字API连接调用。启动

因此,我使用tidhttp发出post请求。当我尝试设置connectTimeout时,无论是什么时间段,它都没有效果。我仍然要等待~5秒才能得到异常。
提前谢谢

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

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


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

由于Indy附带了源代码,您是否尝试进入它的代码并查看其内部情况?可能重复感谢您的回复。我直接连接到IP地址,我没有使用TID防冻剂。我的连接超时是1000毫秒,但需要5000毫秒。我应该提到,我使用idhttp组件对不同的URL/ip进行了许多请求。如果通过dns查找的第一个请求成功,而对设备的第二个请求失败,那么我将花费上述时间,直到获得超时异常。但是,如果我完全断开计算机与网络的连接,它就可以正常工作。1秒的超时时间太小了。仅达到socket API connect调用所需的开销就可能需要1秒以上的时间。我不建议使用至少少于5秒的超时。我宁愿自己用10-30秒。