Hallo,
ich experimentiere gerade etwas mit der HTTPServer Komponente von Indy9 herum.
Hintergrund ist, dass ich meine Software mit einem (Intra-)Webinterface ausrüsten möchte, sprich ein Benutzer im Firmennetz soll mit dem Explorer auf Daten aus den Anwendung zugreifen können.
Soweit habe ich erst mal die HTTPServerDemo von Indy9 hergenommen und etwas abgeändert.
Da ich Turbo Delphi verwende und damit die Komponenten nicht zur Entwurfszeit anlegen kann ist die Instanzvariable zu den private-Deklarationen gewandert und wird im OnCreate erzeugt.
Delphi-Quellcode:
private
HTTPServer: TIdHTTPServer;
procedure TfmHTTPServerMain.FormCreate(Sender: TObject);
begin
//Instanz erzeugen und Ereignisbehandlung
HTTPServer:=TIdHTTPServer.Create(self);
HTTPServer.OnCommandGet:=HTTPServerCommandGet;
HTTPServer.OnSessionStart:=HTTPServerSessionStart;
HTTPServer.OnSessionEnd:=HTTPServerSessionEnd;
HTTPServer.OnConnect:=HTTPServerConnect;
HTTPServer.OnDisconnect:=HTTPServerDisconnect;
HTTPServer.OnExecute:=HTTPServerExecute;
HTTPServer.OnCommandOther:=HTTPServerCommandOther;
HTTPServer.OnStatus:=HTTPServerStatus;
Das funktioniert auch so wie erwartet. Im Explorer tippe ich "http//
localhost" und als Ergebnis erhalte ich die mitgelieferte "index.html".
Da der PC ja im Netzwerk erreichbar sein soll, habe ich anschießend die
IP geändert.
Delphi-Quellcode:
procedure TfmHTTPServerMain.acActivateExecute(Sender: TObject);
var
Binding : TIdSocketHandle;
begin
acActivate.Checked := not acActivate.Checked;
lbSessionList.Items.Clear;
if not HTTPServer.Active then
begin
HTTPServer.Bindings.Clear;
Binding := HTTPServer.Bindings.Add;
Binding.Port := StrToIntDef(edPort.text, 80);
//Binding.IP := '127.0.0.1';
Binding.IP := LocalIP; //LocalIP ist eine Function, die ich aus der Codelibrary habe. Passt so.
end;
Ich kann jetzt den Server ordnungsgemäß starten "Listening for HTTP Connection..."
Tippe ich jetzt im Explorer meine eigene
IP ein, dann erhalte ich eine
Exception "Connection reset by peer". Im Logfenster der Serverdemo steht "User logged in" und danach "User logged out".
Von einem anderen Rechner passiert gar nichts. Buäh!
Ich möchte jetzt nicht ausschließen, dass es an gewissen Einstellungen im Netzwerk liegt, wobei ein Mitarbeiter bei IT mir sagte, intern wären die Ports offen.
Was nun? Vorschläge willkommen.