![]() |
wie versende ich mit tclient/serversocket eine datei?
hi,
ich wollte fragen wie ich mit tserversocket und mit tclientsocket eine datei verschicke? mfg gandime |
Re: wie versende ich mit tclient/serversocket eine datei?
Jo,
kommt darauf an. Beispielsweise mit .sendstream . der flossinger |
Re: wie versende ich mit tclient/serversocket eine datei?
ja soweit bin ich auch schon aber wie emfange ich das dann?
edit: mein bisheriger versuch clinet:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var FStream: TFileStream; begin ClientSocket1.Active:=true; ClientSocket1.Socket.Connect(5000); FStream := TFileStream.Create('C:\la.avi', fmOpenRead or fmShareDenyWrite); ClientSocket1.Socket.Write(FStream.Size); ClientSocket1.Socket.SendStream(FStream); ClientSocket1.Socket.Disconnect(5000); ClientSocket1.Active:=false; freeandnil(fstream); end; server:
Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket); var FStream:tfilestream; i_size:integer; begin FStream := TFileStream.Create('C:\ka.avi', fmCreate or fmShareExclusive); Socket.Read(i_size); Socket.ReceiveBuf(fstream,i_size); freeandnil(fstream); end; |
Re: wie versende ich mit tclient/serversocket eine datei?
Du hast da ein paar falsche Annahmen über das Funktionieren der Sockets. Ist kein Wunder, sie sind schlecht dokumentiert. Sei froh, sie funktionieren viieel einfacher, als du glaubst.
Ein kleines Demobeispiel, das grundlegende Funktionen zeigt:
Delphi-Quellcode:
Wenn empfangen wird, wird das read ereignis ausgelöst. Zum Zeitpunkt connect Ereignis kannst du noch nichts auswerten. Connect sagt nur, dass die Verbindung steht, nicht das Daten da sind.
procedure log(text:string);
begin form1.memo1.lines.add(text); end; procedure TForm1.Button1Click(Sender: TObject); var stream1:tfilestream;filename:string; begin filename:= 'C:\irgendeinPfad\test.txt'; stream1:=tfilestream.Create(filename,fmOpenRead or fmShareExclusive); serversocket1.Socket.connections[0].SendStream(stream1); end; procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); begin log(socket.receivetext); end; grüsse, der flossinger |
Re: wie versende ich mit tclient/serversocket eine datei?
ich verstehe ich ganz wie das funktionieren soll
client:
Delphi-Quellcode:
server:
procedure TForm1.Button1Click(Sender: TObject);
begin ClientSocket1.Active:=true; ClientSocket1.Socket.Connect(5000); end; procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); begin FStream := TFileStream.Create('C:\ka.mdf', fmCreate or fmShareExclusive); i_size:=strtoint(socket.ReceiveText); socket.ReceiveBuf(fstream,i_size); end;
Delphi-Quellcode:
blos wo is da der fehler?
procedure TForm1.Button1Click(Sender: TObject);
begin FStream := TFileStream.Create('X:\bluetooth.mdf', fmOpenRead or fmShareDenyWrite); serversocket1.Socket.connections[0].SendText(inttostr(fstream.Size)); serversocket1.Socket.connections[0].SendStream(fstream); end; |
Re: wie versende ich mit tclient/serversocket eine datei?
Zitat:
Was soll .connect(5000) bewirken? ist unverständlich. Fehler: .receivebuf verlangt als 1. Parameter einen bufferpointer, keinen stream. Wenn du mit .sendtext was sendest, heisst das noch lange nicht, das bei on read nur dieser Inhalt empfangen wird. Wenn du mit sendstream was sendest, heisst das nicht, das nur der Stream bei onread empfangen wird, oder dass der in einem Paket empfangen wird. Bei einem read ereignis können mehrere getrennt gesendete Inhalte aneinander kleben. Ein Stream kann in Teilen mit mehreren read Ereignissen ankommen. Dein Projekt scheint zwei Nummern zu gross für dich zu sein. Man muss bei einem Projekt zumindest so weit sein, dass man konkrete sinnvolle Fragen stellen kann, sonst kann einem keiner helfen. Und man sollte in der Lage sein Anbtworten zu lesen und den Code aus Antworten zu testen und zu modifizieren. der flossinger |
Re: wie versende ich mit tclient/serversocket eine datei?
Zitat:
@Threadersteller: ![]() ![]() |
Re: wie versende ich mit tclient/serversocket eine datei?
also:
Zitat:
Zitat:
Zitat:
nein das projekt ist ganz bestimmt keine 2 nummern zu groß für mich! ich versuche ja immer konkrete fragen zu stellen aber wenn ich noch absolut ka habe wie das mit dem socket modul geht ist das meinermeinung nach schlecht |
Re: wie versende ich mit tclient/serversocket eine datei?
ja fein,
dann läuft ja alles bestens der flossinge |
Re: wie versende ich mit tclient/serversocket eine datei?
@koos
es ist ja wunderbar, wie du solche Grundsätze herunterbeten kannst. Aber ein paar Demozeilen, in denen es um etwas anderes geht, so klugscheisserisch zu kritisieren, das entbehrt nicht eines etwas skurilen charmes. Aber gratuliere, dass du eine anscheinend dringend benötigte Glegenheit gefunden hast, dein ach so grosses Wissen zu verbreiten. smiling, der flossinger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz