0

私は Indy10 を使用しており、から派生したクラスを使用して Web サーバーを作成しましたTIdHttpServer。私のサブクラスでは、DoMaxConnectionsExceededメソッドをオーバーライドします。MaxConnectionsそして、これは を超えると適切に発火するようです。

以前の Indy バージョンでは、少なくとも Remy Lebeau のコメントhereMaxConnectionReplyによると、プロパティ onがありましたTIdHttpServerMaxConnections超過した場合、これを使用してカスタム メッセージを作成できます。これは Indy 10 には当てはまらないようです。

を超えたときにカスタム メッセージを作成できる Indy10 の方法はありますMaxConnectionsか?

4

1 に答える 1

1

リンク先のスレッドで述べたように、から派生していないMaxConnectionReplyによって実装されています。をオーバーライドしているため、独自の応答をクライアントに手動で送信する必要があり、適切に HTTP 形式になっていることを確認してください。次に例を示します。TIdCmdTCPServerTIdHTTPServerDoMaxConnectionsExceeded()

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 に答える