AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Kleiner Webserver mit Feedback?
Thema durchsuchen
Ansicht
Themen-Optionen

Kleiner Webserver mit Feedback?

Ein Thema von moelski · begonnen am 4. Jul 2008 · letzter Beitrag vom 4. Jul 2008
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Kleiner Webserver mit Feedback?

  Alt 4. Jul 2008, 09:09
Moin !

Wenn ich das richtig sehe kommt Delphi 2007 ja mit Indy 10 daher. Und ich habe da seit längerem eine Idee und wollte mal nachfragen ob (und wie) man so etwas realisieren kann.

Also, grob beschrieben habe ich folgendes vor:
- Webserver in Anwendung integrieren (mittels TIdHTTP ?) damit der User im lokalen Netz bzw. (wenn die Firewall es zulässt) über das Internet seinen Chart ansehen kann.
- "auf dem Webserver" eine Seite hinterlegen welche etwas Text enthält und eine Grafik (die wird von unserer Chartkomponente kopiert)
- in der Seite einen Button hinterlegen "Refresh" (damit der User eine neue Seite bzw. eine neue Grafik anfordern kann)

Nu hät ich da ein paar Fragen zu und vielleicht kann mir da ja jemand ein paar Tips geben ...
1) Ist das so machbar wie beschrieben?
2) Gibt es irgendwo ein Beispielprojekt was grundlegend erstmal die Erstellung eines Webservers mittels Indy zeigt?
3) Wie kriegt man das mit dem Refresh Button hin? Geht das überhaupt mittels Indy? Und kriegt die Anwendung das dann auch mit?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Kleiner Webserver mit Feedback?

  Alt 4. Jul 2008, 09:20
Zitat von moelski:
1) Ist das so machbar wie beschrieben?
Kein Problem, ja. Du benötigst die TIdHTTPServer Komponente.
Zitat von moelski:
2) Gibt es irgendwo ein Beispielprojekt was grundlegend erstmal die Erstellung eines Webservers mittels Indy zeigt?
In den Indy-Demos sollte ein Beispiel für einen einfachen HTTP-Server dabei sein.
Zitat von moelski:
3) Wie kriegt man das mit dem Refresh Button hin? Geht das überhaupt mittels Indy? Und kriegt die Anwendung das dann auch mit?
Den musst Du nur ins HTML integerieren. Wenn der User drauf klickt wird einfach die Seite neu geladen. Verschiedene Möglichkeiten sind z.B. ein Bei Google suchenHTML-FORM und der Button führt ein einfaches SEND aus, oder ein hinterlegtes [google="JavaScript Reload"]JavaScript welches ein Reload();[/google] durchführt.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Kleiner Webserver mit Feedback?

  Alt 4. Jul 2008, 09:32
Moin Daniel,

danke für deine Antwort.

Ich bleibe erstmal bei Frage 2 ... Frage 3 kommt danach dran
Den einfachen Webserver (also die Demo) habe ich gerade gefunden. Ist im wesentlichen ja nicht mehr als das hier:
Delphi-Quellcode:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPServer, IdCustomHTTPServer, IdContext,
  IdHTTPServer, IdCustomTCPServer;

type
  TForm1 = class(TForm)
    IdHTTPServer1: TIdHTTPServer;
    procedure IdHTTPServer1CommandGet(AContext: TIdContext;
      ARequestInfo: TIdHTTPRequestInfo;
      AResponseInfo: TIdHTTPResponseInfo);
  private
  public
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  AResponseInfo.ContentText := 'Hello World. It is ' + TimeToStr(Time);
end;

end.
Aber wenn ich es kompilieren will kriege ich eine nach dem Start eine Exception:
Zitat:
Erste Gelegenheit für Exception bei $7C812AEB. Exception-Klasse EIdSocketError mit Meldung 'Socket Error # 10048
Address already in use.'. Prozess MWS.exe (5864)
Was sagt mir das? Im IdHTTPServer1 war keine Adresse eingetragen. Habe mal probehalber ein Binding hinzugefügt, aber das brachte auch keinen Erfolg.
Und wenn ich bei mir im Browser http://localhost/ aufrufe kommt HTTP 404 - keine Webseite gefunden. Also schlummert da auch kein anderer Webserver rum.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

Re: Kleiner Webserver mit Feedback?

  Alt 4. Jul 2008, 10:05
HI,

so einen Webserver zu erstellen, klappt mit deinem Code wunderbar. Ich hab dazu Indy9 und Delphi7 benutzt.
Frage: Hast du deinen Webserver aktiviert (Active := true)?

Zitat von moelski:
Und wenn ich bei mir im Browser http://localhost/ aufrufe kommt HTTP 404 - keine Webseite gefunden. Also schlummert da auch kein anderer Webserver rum.
wenn wirklich 404 kommt, dann schlummert auf jeden Fall noch ein anderer Webserver. kommt nur die Meldung vom Browser, dass kein Server gefunden wurde, dann ist das nicht 404.

Mach mal noch nen Button und füg folgenden Code ein, während du IdHttpServer1.Activate im OI auf False stellst.
Hierbei gehts mir darum, wann genau die Exception kommt.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdHTTPServer1.Active := true;
end;
Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Kleiner Webserver mit Feedback?

  Alt 4. Jul 2008, 10:10
Zur Info: Skype setzt sich auch gern mal auf Port 80. Wenn dies die Ursache sein sollte, dann kannst Du in den sog. erweiterten Optionen von Skype angeben, dass Port 80 nicht genutzt werden soll.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Kleiner Webserver mit Feedback?

  Alt 4. Jul 2008, 11:32
Moin !

Ich habe mir TCPView gesaugt und konnte ziemlich schnell Skype als Übeltäter rausfinden. Daniel hatte da schon ganz Recht.

Ich habe daraufhin Skype geschlossen und siehe da ...
Zitat:
Hello World. It is 11:13:30


Das klappt nun also. Ich habe dann den Port im Binding auf 82 gelegt. Und nun bin ich erstmal glücklich mit einem http://localhost:82/.

So nun aber zu Frage 3 weiter ...
Zitat:
3) Wie kriegt man das mit dem Refresh Button hin?
Ich sollte die Frage etwas anders formulieren ... Der Refresh war nur ein Beispiel. Generell geht es mir darum, wie ich mit der Webseite in gewisser Weise "Interagieren" kann.

Also nehm ich mal folgendes Szenario ... Angenommen ich habe da eine kleine Inputbox und einen Send Button. Der Benutzer gibt einen Text ein und drückt Send. Jetzt soll die Anwendung das mitbekommen und der Text wird zur Überschrift des Charts.
Geht das? Und wie mach ich das?

Vielleicht kann mir das jemand an einem ganz simplen Beispiel zeigen wo man dann die Caption des Server Formulars neu setzt. Das würde mir als Einstieg völlig reichen.

Ach ja und noch ne Frage am Rande ...
Erzeugt der HTTP Server auch irgend eine Art Logging die ich abgreifen könnte? Also sowas wie
- Client xyz connected / disconnected
- Connection Error
- ...
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Kleiner Webserver mit Feedback?

  Alt 4. Jul 2008, 11:45
Zitat von moelski:
Also nehm ich mal folgendes Szenario ... Angenommen ich habe da eine kleine Inputbox und einen Send Button. Der Benutzer gibt einen Text ein und drückt Send. Jetzt soll die Anwendung das mitbekommen und der Text wird zur Überschrift des Charts.
Geht das? Und wie mach ich das?
Aber sicher geht das.
Wie weit müssen wir denn ausholen? (Die Frage ist nicht böse gemeint.) Was sagen Dir die Stichworte "HTML-Formulare", "HTTP-POST" und "HTTP-GET"? Im Wesentlichen muss Folgendes passieren: Du definierst auf Deiner Webseite mittels HTML ein sog. Formular. Dem verpasst Du einen sog. Absenden-Button, der dann den Browser veranlasst, die eingegebenen Daten an den Server zu senden. Dort wirst Du ein Ereignis haben, das aktiv wird, wenn ein Request kommt. Ich habe diese Komponente jetzt nicht vor mir, aber im Dunstkreis dieses Ereignisses müsste es etwas mit POST oder GET geben. Und da landen dann Deine Daten.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Kleiner Webserver mit Feedback?

  Alt 4. Jul 2008, 13:53
Moin !

Zitat:
Was sagen Dir die Stichworte "HTML-Formulare", "HTTP-POST" und "HTTP-GET"?
Naja schon was. Nur wie dann die Interaktion mit der Anwendung geht war / ist mir nicht klar.

Ich habe in der Zwsichenzeit durch etwas gefunden Quellcode und einem Web Formular schon ein paar neue Ergebnisse. So langsam bin ich da wo ich hin will

Aber so ein paar kleine Dinge sind mir noch unklar bzw. funktionieren noch nicht so schön ...

Wenn man die Anwendung startet kann man über http://localhost:82/ auf die Webseite. Soweit so gut ...
Man kann was eintippen (oder auch nicht) und klickt auf Refresh oder absenden. Beide liefern den eigegebenen Kram am Server ab:
Zitat:
Vorname=sdf&Text=&Refresh=Refresh
Und über "Refresh=Refresh" bzw. "Send=Absenden" könnte ich auch erkennen welcher Button genau gedrückt wurde. Hier bin ich mir schonmal nicht sicher ob das ein sinnvoller Weg ist ... Macht man das so?

Eigentlich würde mir reichen, dass man einen Button drückt, und am Server kommt was an wie Button xy gedrückt. Also wie eine Art Submit. Ein Button alleine nutzt aber gonix so ohne OnClick bzw. Type.
Angehängte Dateien
Dateityp: rar httpserver_128.rar (18,7 KB, 30x aufgerufen)
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz