Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Webserver in einer Exe? (https://www.delphipraxis.net/46652-webserver-einer-exe.html)

dragi 29. Mai 2005 02:18


Webserver in einer Exe?
 
Hallo,

ich habe mal ein Tool gesehen das aus einer Exe und einem Ordner mit wml Dateien bestand. Wenn man nun die Exe gestartet hat und sich mit seinem Handy über WAP mit der IP des Rechners verbunden hat wurden die wml Seiten angezeigt. Dazu muss doch ein Webserver in dieser Exe eingebaut sein, oder? Wie kann man so etwas machen?

Gruss

Dragi

Sharky 29. Mai 2005 05:33

Re: Webserver in einer Exe?
 
Zitat:

Zitat von dragi
... Dazu muss doch ein Webserver in dieser Exe eingebaut sein, oder? Wie kann man so etwas machen?...

Hai dragi,

ein WEB-Server ist ein Programm wie jedes andere auch. Warum soll er dann nicht in einer Echse sein ;-)

Im Prinzip ist ein WEB-Server doch recht einfach aufgebaut. Das Programm lauscht auf bestimmten Ports (http : 80, WAP: 9201).
Der Client (WEB-Browser) sendet ihm nun eine Zeichenfolge (z.B. : /.../index.htm) in der genau steht welche Datei er vom Server haben möchte. Nun, und genau diese Dateien bekommt er dann zugesendet.

dragi 29. Mai 2005 12:38

Re: Webserver in einer Exe?
 
Jetzt wo du das sagst klingt es logisch. Dann könnte man so etwas ja mit den normalen Sockets oder mit Indy realisieren. Jetzt habe ich mich mit sowas noch nicht wirklich beschäftigt aber würde der "Server" dann die wml-Datei als Stream senden? Ich meine, kann der WapBrowser dann damit etwas anfangen? Oder wie muss die Datei an den Browser gesendet werden?

Gruss Dragi

MosiXXL 29. Mai 2005 13:51

Re: Webserver in einer Exe?
 
Schau Dir doch mal die Indykomponenten (Indy -) an. Da findest Du so einiges. Unter anderem auch das Grundgerüst für einen Webserver.

Robert_G 29. Mai 2005 14:17

Re: Webserver in einer Exe?
 
Sowas ließe sich sicher mit IntraWeb in Delphi realisieren. ;)
Die IMHO bessere Lösung wäre ASP.Net (IMHO), dort sind die meisten build-in Controls so entwickelt, dass sie sich entweder als full-fledged HTML oder auch als kleinere WML Version rendern. :)

dragi 29. Mai 2005 18:49

Re: Webserver in einer Exe?
 
Vielen Dank für die Tips. Ich benutze nun die IdHttpServer Komponente von indy. Die einzige Frage die ich mir noch nihct beantworten konnte, ist wie ich Links realisieren. Also woher weiss idhttpserver das auf ein link geklickt wurde und welche Site nun geladen werden soll? Ich finde auch nirgends ein tutorial zu dieser Webserver Komponente. Und eine Demo ist bei mir in Delphi 2005 nicht dabei.

Gruss

Dragi

Sharky 29. Mai 2005 19:08

Re: Webserver in einer Exe?
 
Zitat:

Zitat von dragi
..... Also woher weiss idhttpserver das auf ein link geklickt wurde....

Überhaupt nicht ;-)
Es ist aufgabe des Clients einen "Link" auszuwerten und dem Server zu sagen was er, bei klick auf einen solchen, möchte.

dragi 29. Mai 2005 19:12

Re: Webserver in einer Exe?
 
OK, aber wie kriege ich mit IdHttpServer raus was der Client gerade möchte?
In der CommanGet procedure wird ja einmal Request und Response übergeben. Aber wie sieht der request aus? Ich sehe es doch richtig: Der client clickt auf der Site auf den Link, damit wird die adresse der verlinkten Site an der Server geschickt. Aber wo kann ich nun auslesen was der Client für eine Adresse geschickt hat?

Gruss Dragi

Sharky 29. Mai 2005 19:15

Re: Webserver in einer Exe?
 
Zitat:

Zitat von dragi
....damit wird die adresse der verlinkten Site an der Server geschickt....

Was verstehst Du denn unter "adresse"? Dein Server bekommt natürlich auch nur die Anfagen die "seiner URL entsprechen".

dragi 29. Mai 2005 19:22

Re: Webserver in einer Exe?
 
Sorry das es ein wenig kompliziert ist mit mir. Ich habe mich mit Web überhaupt noch nicht beschäftigt. Ich habe nun einen Server der im moment nicht anderes macht als:

Code:
procedure TForm1.IdHTTPServer2CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  AResponseInfo.ContentStream := TFileStream.Create('index.wml',fmOpenRead);
end;
Die wml Datei sieht so aus:

Code:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="uebersicht" title="Hauptmenü" newcontext="true">
   <p align="center">
      [i]Willkommen bei
[b]Test Server[/b][/i]
   </p>
      [url="index2.wml"]Test[/url]
   



   </p>
</card>
</wml>
Wenn ich nun im Wap Browser auf den Link Test klicke denke ich mir das index2.wml an den Server gesendet wird. Das muss ich ja jetzt im Server abfangen und AResponseInfo so anpassen das nicht mehr index.wml sondern index2.wml gesendet wird. Aber mir ist schleierhaft wie ich das machen soll. Ich habe gedacht ich frage einfach ARequestinfo ab aber da weiss ich nicht welches Property das dann ist z.B. ARequestinfo.Dokument ist es nicht.

Vielleicht gehe ich das auch alles voll verkehrt an...

Gruss

Dragi


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:39 Uhr.
Seite 1 von 2  1 2      

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