首页 > 解决方案 > TIdTCPClient 连接池

问题描述

我想TIdTCPClient用 Delphi 和TWebModule.

目前在创建 WebModule 时,我创建了一个新的TIdTCPClient并连接到 Redis,例如:

procedure TWebService.WebModuleCreate(Sender: TObject);-
begin
    FClient := TIdTCPClient.Create();
    FClient.Connect('REDIS_HOST', 6379);
end;

在 web 模块销毁时,我断开连接并释放资源,例如:

procedure TWebService.WebModuleDestroy(Sender: TObject);
begin
   FClient.Disconnect;
   FClient.Free;
end;

一切正常......但是这样我在每个新请求上都创建了一个新连接,并且在很长一段时间后,TIME_WAIT套接字的数量越来越多。

我想实现一个全局连接池,始终打开固定数量的连接(例如:50)并仅使用这些连接池。

Indy 有什么东西可以管理 TCP 连接池吗?

标签: delphitcpconnection-poolingindy

解决方案


不,Indy 不提供任何用于池化 TCP 连接的功能。TIdTCPClient您必须在自己的代码中实现自己的对象池。


推荐阅读