我正在使用Indy10并使用派生自 TIdHttpServer
的类创建了一个Web服务器。在我的子类中,我覆盖了 DoMaxConnectionsExceeded
方法。当超过 MaxConnections
时,这似乎正在触发。
在早期的Indy版本中,至少根据Remy Lebeau的评论here,MaxConnectionReply
上有 TIdHttpServer
属性。如果超出MaxConnections
,则可以使用此选项创建自定义消息。 Indy 10似乎不是这样。
Indy10是否可以在超出MaxConnections
时创建自定义消息?
答案 0 :(得分:1)
正如我在您链接的主题中所述,MaxConnectionReply
由TIdCmdTCPServer
实施,而TIdHTTPServer
并非来自DoMaxConnectionsExceeded()
。由于您要覆盖procedure TMyHttpServer.DoMaxConnectionsExceeded(AIOHandler: TIdIOHandler);
var
Html: TIdBytes;
begin
Html := ToBytes('<html><body>500 - Too many connections</body></html>');
AIOHandler.WriteLn('HTTP/1.0 500 Too many connections');
AIOHandler.WriteLn('Content-Type: text/html');
AIOHandler.WriteLn('Content-Length: ' + IntToStr(Html));
AIOHandler.WriteLn('Connection: close');
AIOHandler.WriteLn;
AIOHandler.Write(Html);
end;
,因此您必须手动将自己的回复发送到客户端,并确保它是正确的HTTP格式,例如:
{{1}}