0

我正在使用 Indy10 并使用从TIdHttpServer. 在我的子类中,我重写了该DoMaxConnectionsExceeded方法。MaxConnections当超过时,这似乎是正确的。

在早期的 Indy 版本中,至少根据 Remy Lebeau在这里的评论,MaxConnectionReplyTIdHttpServer. MaxConnections如果超出,这可用于创建自定义消息。Indy 10 似乎并非如此。

Indy10 有没有一种方法可以在MaxConnections超出时创建自定义消息?

4

1 回答 1

1

正如我在您链接到的线程中所述,MaxConnectionReply由 实现TIdCmdTCPServer,它TIdHTTPServer不是派生自。由于您正在覆盖DoMaxConnectionsExceeded(),您必须手动将自己的回复发送给客户端,并确保它是正确的 HTTP 格式,例如:

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;
于 2013-04-06T20:20:49.603 回答