Einzelnen Beitrag anzeigen

MStoll

Registriert seit: 15. Nov 2005
131 Beiträge
 
Turbo Delphi für Win32
 
#21

AW: TIdHTTPServer: Programmabsturz bei langwieriger ResponseInfo-Berechnung

  Alt 2. Jan 2014, 20:11
Das müsste so reichen:

Delphi-Quellcode:
unit http;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils,

  IdHTTPServer, IdCustomHTTPServer, IdContext, IdSocketHandle, IdGlobal;

type
  THTTPServer = class(TIdHTTPServer)
  private
    _newPort : Word;
  public
    constructor Create(port : Word);
    procedure InitComponent; override;
    procedure DoCommandGet(AContext: TIdContext;
      ARequestInfo: TIdHTTPRequestInfo;
      AResponseInfo: TIdHTTPResponseInfo); override;
  end;

implementation

constructor THTTPServer.Create(port: Word);
begin
  _newPort := port;

  inherited Create;
end;

procedure THTTPServer.InitComponent;
var
  Binding: TIdSocketHandle;
begin
  inherited;

  Bindings.Clear;
  Binding := Bindings.Add;
  Binding.IP := '0.0.0.0';
  Binding.Port := _newPort;
  Binding.IPVersion := Id_IPv4;
end;

procedure THTTPServer.DoCommandGet(AContext: TIdContext;
      ARequestInfo: TIdHTTPRequestInfo;
      AResponseInfo: TIdHTTPResponseInfo);
begin
  AResponseInfo.ContentText := 'Test';
  Sleep(4000);
end;

end.
Als Client habe ich Google Chrome verwendet (mit ein paar Tabs, die den Webserver anfragen). Aber auch jeder andere Browser sollte es tun. Spätestens, wenn du in den Tabs schnell ein paar mal F5 drückst, sollte das Server-Programm abstürzen.

Ich bin mittlerweile bei Synapse. Damit scheint das ganze zu funktionieren (erste Einschätzung).
"Man soll nie mehr essen als mit Gewalt reingeht!" (n.n.)
  Mit Zitat antworten Zitat