Entwickler-Ecke

Internet / Netzwerk - Mit IdHTTP eine datei im Netzwerk verchicken?


pigfacejoe - So 22.04.07 15:57
Titel: Mit IdHTTP eine datei im Netzwerk verchicken?
Hallo zusammen,

Mit IdHTTP kann man ja Dateien von Servern runterladen, kann ich dann eigentlich auch mit der lokalen IP Adresse von einem PC in meinem Netzwerk eine datei von PC1 auf meinen PC "downloaden", also auch mit IdHTTP? Falls ja, könnte mir vlt jem. erklären wie das geht?

Schönen Gruss,
PigfaceJoe


jakobwenzel - So 22.04.07 16:01

Dafür muss dann auf dem anneren lokalen PC ein HTTP-Server laufen.


pigfacejoe - So 22.04.07 16:05

danke für die schnelle Antwort, aber ich kann doch einfach schreiben idhttp1.get(http://blabla/bla.exe) wieso kann ich eigentlich dann nicht schreiben idhttp1.get(84.213.231.83/C:\bla.exe) [oder so ähnlich^^]?


jakobwenzel - So 22.04.07 16:15

idHTTP nutzt einen HTTP-Server. Und wenn da keiner läuft, gehts mit idHTTP nicht.


pigfacejoe - So 22.04.07 16:21

dankeschön, habs kapiert.
Kennst du vlt. einen Thread, indem beschrieben wird, wie das geht?


jakobwenzel - So 22.04.07 16:34

Entweder du installierst nen Apachen, oder du suchst hier im Forum mal nach idHTTPServer.
Am einfachsten wäre es aber, wenn du Netzwerkfreigaben verwenden würdest.


Timosch - So 22.04.07 16:40

Aber wieso willst du die Datei denn unbedingt über HTTP verschicken? Da gibts doch Protokolle, die für sowas wesentlich besser geeignet sind. Wie gerade gesagt, Netzwerkfreigaben z.B.


pigfacejoe - So 22.04.07 16:53

Nun ja, ich weiss halt nicht, wie das anders geht (ich weiss auch nicht wies so geht) aber ich hatte gerade einen Netzwerk Chat programmiert mit IdTCPServer und Client und wollte halt noch "einen draufsetzen"^^.
Alsow enn jm weiss wies in etwa geht kann ers ja mal posten , wär echt nett.


jakobwenzel - So 22.04.07 16:55

Haste meinen Post gesehen? :wink:
Da stehen schon geeigenete Begriffe, einfach mal danach suchen...


Timosch - So 22.04.07 16:56

Oder les die Datei ein und verschick den Inhalt auch über TCP.


pigfacejoe - So 22.04.07 17:32

Hab ich ma gesucht und probiert, leider wills net so recht, hier mal der code zum senden:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure senden;
var
St: TfileStream;
begin
if b then

begin
showmessage(form3.ip);//Einfach nurn test, ob die richtige IP drinn is..
form3.idtcpclient1.host:=form3.ip;
  form3.idtcpclient1.boundPort:=5300;
  St := TfileStream.Create(form3.opendialog1.filename,fmOpenRead) ;
  St.Seek(0, soFromBeginning);
  form3.IdTCPClient1.Connect;
  try
    form3.IdTCPClient1.WriteStream(St, True, true);
  finally
    form3.IdTCPClient1.Disconnect;
  end;
  St.Free;
end;

so der Server macht auf Ruf das hier:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.IdTCPServer2Execute(AThread: TIdPeerThread);
var
I,z: Integer;
St: TfileStream;
begin

St := TfileStream.Create(Extractfilepath(Paramstr(0))+'bla.jpg',fmCreate);
try
   with AThread.Connection do begin
     I := ReadInteger;
     ReadStream(St, I);
   end;
finally
   St.Free;
end;
end;

Der Fehler kommt dann "Cannot bind socket, Port already in Use" hab den Port aber freigegeben und er müsste frei sein.Ich habe probiert von meienem PC auf meinen zu senden und habe ein .jpg Bild als File ausgewählt...Jemand ne Idee was da falsch sein könnte?


matze - Mo 23.04.07 07:20

Hallo,

bitte erstelle für jede deiner Fragen ein separates Topic, da die Diskussion mehrerer Fragen in einem Topic für gewöhnlich für Verwirrung und Durcheinander sorgt.

Viele Grüße, Matze