c++ - 如何为 HTTP 代理服务器设置超时(不是连接超时)

标签 c++ delphi proxy indy10 c++builder-xe2

我正在使用 TIdHTTPProxyServer 现在我想在成功连接到目标 HTTP 服务器但很长时间(例如 3 分钟)没有收到响应时终止连接 目前我没有找到相关的属性(property)或事件。并且即使客户端在代理服务器收到来自 HTTP 服务器的响应之前终止连接。在代理服务器收到响应之前,不会触发 OnException 事件。 (也就是说,如果代理服务器仍然没有收到来自HTTP Server的响应,我什至不知道客户端已经终止了连接...)

我们将不胜感激。

谢谢!

威利

最佳答案

Indy 默认使用无限超时。要执行您要求的操作,您需要将出站连接的 ReadTimeout 属性设置为目标服务器。您可以通过 TIdHTTPProxyServerContext.OutboundClient 属性访问该连接。使用 OnHTTPBeforeCommand 事件,它在 OutboundClient 连接到目标服务器之前触发,例如:

#include "IdTCPClient.hpp"

void __fastcall TForm1::IdHTTPProxyServer1HTTPBeforeCommand(TIdHTTPProxyServerContext *AContext)
{
    static_cast<TIdTCPClient*>(AContext->OutboundClient)->ReadTimeout = ...;
}

关于c++ - 如何为 HTTP 代理服务器设置超时(不是连接超时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11255454/

相关文章:

python - 使用 Python 子进程为后续 ssh 命令保持 SSH 连接处于事件状态

c++ - 是否可以在同一 gdb session 中跨重新运行保留硬件观察点?

delphi - Indy 的 SMTP 身份验证方法是否会导调用子邮件进入 hotmail 中的垃圾箱?

c++ - 累加器和 while 循环

delphi - 如何减少新表单的 "uses"样板?

performance - Delphi - 内存使用情况并将类作为 Var 参数传递

proxy - 为什么jdk动态代理实现中没有使用参数 'proxy'?

redirect - 如何让 nginx 代理停止重定向到 root?

c++ - 如何修复构建时缺少的 .pch 文件?

c++ - Android NDK 优缺点