Einfacher Webserver

Alle Fragen zur Netzwerkkommunikation
Antworten
xedp3x
Beiträge: 15
Registriert: Mi 8. Jun 2011, 17:46

Einfacher Webserver

Beitrag von xedp3x »

Ich hab einen Einfachen Webserver und möchte jetzt noch das die Datei Client.exe heruntergeladen werden kann.
So kann ich zwar was runter laden, dann aber nicht starten.
Wisst Ihr wie es Besser geht?

Code: Alles auswählen

if get = '/Client.exe' then
     begin
       Back.LoadFromFile('Client.exe');
     end;
 
  if Back.Count = 0 then
    begin
       Back.Add('HTTP/1.1 404 Unbekanter Befehl');
       Back.add('Server: TeaMoni v'+FloatToStr(version));
       Back.add('Connection: close');
       Back.add('Content-Type: text/html');
       Back.add('');
       Back.add('Die Aktion ist unbekant :-(');
    end;
  aSocket.SendMessage(Back.Text);
  aSocket.Disconnect;

u-boot
Beiträge: 306
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Einfacher Webserver

Beitrag von u-boot »

Ich weiss momentan nicht wie es besser geht.

Ich weiss aber, dass es besser ist, wenn der automatische Start nicht geht (Ich mein das rein sicherheitstechnisch vom Besucher aus).
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

xedp3x
Beiträge: 15
Registriert: Mi 8. Jun 2011, 17:46

Re: Einfacher Webserver

Beitrag von xedp3x »

Ne, ich Meine meine Client.exe ist auf dem Server 15,7 MB groß. Heruntergeladen ist sie dann 15,8 MB groß.
Also stimmt was nicht mit der Übertragung.

Im Browser kann ich schon ausführen anklicken, bringt nur nix.

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Einfacher Webserver

Beitrag von DiBo33 »

Überprüfe beide (originale/geladenene) Dateien mittels Hexeditor.

Btw. ist Back eine TStringList? dann kannst du darin keine Binärdaten speichern, sondern musst die Exe quasi als Stream ausgeben.
Edit: und auch den entsprechenden Content-Type im Header ausliefern.

xedp3x
Beiträge: 15
Registriert: Mi 8. Jun 2011, 17:46

Re: Einfacher Webserver

Beitrag von xedp3x »

TStringList ist wohl das Problem.

mit dem Streamen wird es jetzt aber kompliziert...

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Einfacher Webserver

Beitrag von DiBo33 »

Da wirst du nicht herum kommen, es geht ja nicht nur um die Client.exe, Bilder (innerhalb der ausgelieferten Page) bspw. musst du auch als Binärstream ausliefern, im Prinziep alles was keine reine Textdaten beinhaltet.

xedp3x
Beiträge: 15
Registriert: Mi 8. Jun 2011, 17:46

Re: Einfacher Webserver

Beitrag von xedp3x »

mir geht es jetzt nur um diese Datei.

Der Webserver ist nur da um ein paar Logs auszugeben.
Ich wolle nur ein Update der Clients ergänzen.

BeniBela
Beiträge: 309
Registriert: Sa 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
CPU-Target: 64 Bit

Re: Einfacher Webserver

Beitrag von BeniBela »

string ginge

xedp3x
Beiträge: 15
Registriert: Mi 8. Jun 2011, 17:46

Re: Einfacher Webserver

Beitrag von xedp3x »

Die Clients per Mail zu verschicken geht auch.
Ärgert nur meine alten Arbeitgeber...
Das kann mir jetzt aber auch egal sein :mrgreen:

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Einfacher Webserver

Beitrag von DiBo33 »

Kannst ja mal schauen, evtl. kennt ja deine aSocket Komponente eine Methode um Dateien direkt auszuliefern ohne das du diese vorher einlesen musst.

Oder schicks per Mail :mrgreen:

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Einfacher Webserver

Beitrag von MAC »

versuch mal
>> projekt >> linken >>
Folgende CHeckboxen aktivieren:
(-g)
(-Xs)
(-Xg)
jetzt sollte deine 15 MB exe erstmal weniger groß sein...

Das Reine Ausführen (ohne deine Speicherprobleme) solltest du mit TProcess erledigen können, google einfach mal danach: "TProcess externe Anwendung starten" oder so...

Ist die Datei falsch angeliefert worden oder liegt es vielleicht daran das auf dem Server Linux instaliert ist und (ich hab keine Ahnung ob das stimmt) Dort die angaben in MB gemacht werden und auf deinen Pc Windows ( da .exe ) wo ein Megabyte als 1000 kbyte interpretiert wird und nicht als 1024 kbyte :idea:

Code: Alles auswählen

Signatur := nil;

xedp3x
Beiträge: 15
Registriert: Mi 8. Jun 2011, 17:46

Re: Einfacher Webserver

Beitrag von xedp3x »

Das Problem ist nicht die Exe noch das Ausführen.

Das Problem ist das ich beim Senden irgendwelche Zeichen ergänzt werden. Diese belässt der Browser in der Datei und somit ist die EXE unbrauchbar.
Ich lass einfach auf dem Server noch einen anderen Web-Server installieren und über den geht dann das Update.

Antworten