Ver Mensaje Individual
  #1  
Antiguo 04-09-2014
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 233
Reputación: 14
darkamerico Va por buen camino
Wink TTCPServer Web con Soporte de PHP

Saludos amigos de la comunidad Delphi, les traigo el código de un servidor web hecho en Delphi 2010 que utiliza el componente TTCPServer de la pestaña Internet de la VCL, funciona todo bien, sin embargo, quisiera saber como agregarle soporte para procesar archivos php, tal como apache agrega su Handler, si alguien puede tomar como base el código que comparto aquí y agregarle el parsing de php, se lo agradecería infinitamente:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Sockets, Buttons;

type
  TForm1 = class(TForm)
    servidor: TTcpServer;
    txtLog: TMemo;
    btnPrender: TBitBtn;
    btnApagar: TBitBtn;
    btnSalir: TBitBtn;
    procedure servidorAccept(Sender: TObject; ClientSocket: TCustomIpClient);
    procedure btnPrenderClick(Sender: TObject);
    procedure btnApagarClick(Sender: TObject);
    procedure btnSalirClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnApagarClick(Sender: TObject);
begin
  servidor.Close;
  txtLog.Lines.Add(DateTimeToStr(now) + ': Servidor Parado');
end;

procedure TForm1.btnSalirClick(Sender: TObject);
begin
  btnApagarclick(Sender);
  close;
end;

procedure TForm1.btnPrenderClick(Sender: TObject);
begin
  servidor.Open;
  txtLog.Lines.Add(DateTimeToStr(now) + ': Servidor Ok');
end;

procedure TForm1.servidorAccept(Sender: TObject; ClientSocket: TCustomIpClient);
var
  Linea, Ruta:string;
  HTTPpos:integer;
begin
  Linea:=' ';
  while ClientSocket.Connected and (Linea<>'') do
  begin
    Linea:=ClientSocket.Receiveln();
    txtLog.Lines.Add(Linea);

    if Copy(Linea,1,3) = 'GET' then
    begin
      HTTPpos:=Pos('HTTP',Linea);
      Ruta:=Copy(Linea,5,HTTPpos-6);

      txtLog.Lines.Add('Ruta: ' + Ruta);
    end;
  end;

  if Ruta='/' then
    Ruta:='index.html';

  if FileExists('htdocs/' + Ruta) then
    with TStringList.Create do
    begin
      LoadFromFile('htdocs/' + Ruta);
      ClientSocket.Sendln('HTTP/1.0 200 OK');
      ClientSocket.Sendln('');
      ClientSocket.Sendln(Text);
      ClientSocket.Close;
      Free;
      Exit;
    end;

  if FileExists('htdocs/404.html') then
  begin
    with TStringList.Create do
    begin
      LoadFromFile('htdocs/404.html');
      ClientSocket.Sendln('HTTP/1.0 404 Not Found');
      ClientSocket.Sendln('');
      ClientSocket.Sendln(Text);
      ClientSocket.Close;
      Free;
    end;
  end
  else
  begin
    ClientSocket.Sendln('HTTP/1.0 404 Not Found');
    ClientSocket.Sendln('');
    ClientSocket.Sendln('

Error 404 - Archivo No Encontrado: ' + Ruta + '

'
); end; end; end.
Responder Con Cita