2006-12-13

用Delphi打造自己的WEB服务器

使用indy的IdHTTPServer控件:(限于篇幅,部分内容省略)

unit Unit1;



interface

uses

...... ActiveX,IdBaseComponent, IdComponent, IdCustomTCPServer, IdCustomHTTPServer,IdHTTPServer,IdTCPServer,IdContext;

type

......

procedure Server1CommandGet(AContext: TIdContext;ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);

procedure WebBrowser1NavigateComplete2(ASender: TObject;

const pDisp: IDispatch; var URL: OleVariant);

private

{ Private declarations }

protected

FHTMLDir: string;

FURL:string;

public

{ Public declarations }

end;



var

Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

server1.Active:=false;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

FHTMLDir:= ExtractFilePath(Application.ExeName) + 'WEBROOT';

FURL:='http://127.0.0.1:'+inttostr(server1.DefaultPort)+'/';

end;

procedure TForm1.Server1CommandGet(AContext: TIdContext;

ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);

var

LFilename: string;

LPathname: string;

begin

LFilename := ARequestInfo.Document;

if LFilename = '/' then begin

LFilename := '/index.html';

end;

LPathname := FHTMLDir + LFilename;

if FileExists(LPathname) then begin

AResponseInfo.ContentStream := TFileStream.Create(LPathname, fmOpenRead + fmShareDenyWrite);

end else begin

AResponseInfo.ResponseNo := 404;

AResponseInfo.ContentText := 'The requested URL ' + ARequestInfo.Document+ ' was not found on this server.';

end;

end;

initialization

OleInitialize(nil);

finalization

try

OleUninitialize;

except

end;

end.

精选文章

四家人天天同吃同乐,这个小集体成了一家人 | 南方周末

四家人天天同吃同乐,这个小集体成了一家人 | 南方周末 深秋的广州阳光明媚,碧空万里,适合外出走走、看看。近日,我联系上了一位久违的朋友阿乐。阿乐是地道的番禺人,家的准确位置是st街道st村,离我家不远,驱车半小时就到了。按照他发我的定位,我到了一处小山坡。 我以为这里是他家,但...