Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TCP-Server als Web-Server (Datein senden) (https://www.delphipraxis.net/151215-tcp-server-als-web-server-datein-senden.html)

mb1996 9. Mai 2010 12:21


TCP-Server als Web-Server (Datein senden)
 
Hi Leute,
ich habe mir einen TCP-Server (TTcpServer) zum Web-Server programmiert.
Funktioniert alles super.
Hier das Tutorial.
Nun habe ich folgende Fragen:
1. Wie kann ich ein Bild hochladen? Bei mir kam irgendwie kein Bild an :(
2. Wie kann ich Datein hochladen, die gedownloaded werden können? Bei mir kam nur eine kleine Datei zum download, welche irgendwie keine Inhalte hatte :( .
3. Kann man irgendwie die URL ändern (http://localhost:7777/ zu http://Name/ oder sogar http://Name.de).

Falls ihr den Code haben wollt:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan, Sockets;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Memo1: TMemo;
    XPManifest1: TXPManifest;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    TcpServer1: TTcpServer;
    Button7: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure TcpServer1Accept(Sender: TObject;
      ClientSocket: TCustomIpClient);
    procedure Button7Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);
begin
Button2.Click;
application.Terminate;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin

TCPServer1.Open;
Memo1.Lines.Add('Server gestartet');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
TCPServer1.Close;
Memo1.Lines.Add('Server gestoppt');
end;

procedure TForm1.TcpServer1Accept(Sender: TObject;
  ClientSocket: TCustomIpClient);
var Line:String;
i:Integer;
path:String;
Httppos:Integer;
begin
Line:=' ';

while ClientSocket.Connected and (Line<>'') do
 begin
 Line:=ClientSocket.Receiveln();

 Memo1.Lines.Add(Line);

 if copy(Line,1,3)= 'GET' then
  begin
  Httppos:= Pos('HTTP',Line);

  Path:=Copy(Line,5,HTTPPos-6);

  Memo1.Lines.Add('Path: ' + Path);
    end;
 end;

If Path='/' then
Path:='Seiten/index.html';

If Fileexists('htdocs/' + Path) then
with TStringList.Create do
begin
Loadfromfile('htdocs/' + path);
ClientSocket.Sendln('HTTP:/1.0 200 OK');
ClientSocket.Sendln('');
ClientSOcket.Sendln(Text);
ClientSOcket.Close;

Free;
exit;
end;


ClientSocket.Sendln('HTTP:/1.0 404 Not Found');
ClientSocket.Sendln('');
ClientSOcket.Sendln('<h1>Nicht gefunden</h1>

Path: ' + Path);

ClientSocket.Close;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.Add('---LOG---');
end;

end.

Vielen Dank schonmal für's lesen :-D

rollstuhlfahrer 9. Mai 2010 13:39

Re: TCP-Server als Web-Server (Datein senden)
 
Ähm du, wäre es nicht einfacher und gleichzeitig sinnvoller, wenn du statt einem TCPServer auf einen IdHTTPServer wechselst? Der sorgt nämlich nicht nur für die ankommenden Daten, sondern auch für die ausgehenden Daten.

Bernhard

mb1996 9. Mai 2010 14:43

Re: TCP-Server als Web-Server (Datein senden)
 
Kannst du mir ein gutes Tutorial nennnen?
Giebt es auch eine Komponente, die über das Internet geht? Und nicht nur lokal ist?

Torpedo 9. Mai 2010 14:50

Re: TCP-Server als Web-Server (Datein senden)
 
Was genau willst du machen?

mb1996 9. Mai 2010 15:08

Re: TCP-Server als Web-Server (Datein senden)
 
Eine art Homepage.
Das habe ich schon mit dem TCP-Server gemacht, nur ich konnte keine Daten hochladen.
Das brauche ich aber, denn jede gute Seite hat Bilder. Entweder ich nehme Bilder von anderen Seiten, dass darf man aber nicht immer. Oder ich lade meine eigenen hoch (perfekt). Ausserdem wär eine Funktion Download nicht schlecht. Am bessten wär es, wenn der Server übers Internet läuft.

Torpedo 9. Mai 2010 15:12

Re: TCP-Server als Web-Server (Datein senden)
 
Wieso verwendest du nicht einfach einen normalen Webserver (z.B. Apache)?

mb1996 9. Mai 2010 15:17

Re: TCP-Server als Web-Server (Datein senden)
 
Ich will das selber machen.
Ich bin auch zufrieden, wenn der Server lokal ist.
Ich will nur mal ein guten Webserver machen.

rollstuhlfahrer 9. Mai 2010 16:28

Re: TCP-Server als Web-Server (Datein senden)
 
Bei den Indy9-Demos ( http://www.indyproject.org/sockets/demos/index.en.aspx ) ist ein funktionierender Webserver dabei. Diesen kannst du als Lernobjekt inkl. Tutorial ansehen.

Bernhard

PS: Ich habe die Indy10 noch nicht getestet.

mb1996 10. Mai 2010 13:38

Re: TCP-Server als Web-Server (Datein senden)
 
!!!Vielen Dank Rollstuhlfahrer (xD)!!! :thumb:
Ich bin dabei, die Demo zu studieren.
Wenn mir noch fragen bleiben, werde ich sie hier bald reinschreiben.
Nur noch die Frage, ob man die URL ändern kann.
Aber schonmal vielen Dank :thumb:

himitsu 10. Mai 2010 14:05

Re: TCP-Server als Web-Server (Datein senden)
 
Zitat:

Zitat von mb1996
Nur noch die Frage, ob man die URL ändern kann.

Das hat zwar nix mit diesem Thema zu tun (also wenn weitere Fragen, dann einen neuen Thread dazu eröffnen), aber hier kommt es erstmal darauf an, was du willst.

Soll der Server "weltweit" erreichbar sein, dann wirst du z.B. einen Service wie DynIP ( www.dynip.com ) nutzen müssen, um deine IP mit einer Domain/URL zu verknüpfen
oder soll das nur lokal auf deinem PC so sein?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:27 Uhr.
Seite 1 von 3  1 23      

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