AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi wie versende ich mit tclient/serversocket eine datei?

wie versende ich mit tclient/serversocket eine datei?

Ein Thema von gandime · begonnen am 9. Sep 2006 · letzter Beitrag vom 11. Feb 2007
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
gandime
(Gast)

n/a Beiträge
 
#1

wie versende ich mit tclient/serversocket eine datei?

  Alt 9. Sep 2006, 00:00
hi,
ich wollte fragen wie ich mit tserversocket und mit tclientsocket eine datei verschicke?

mfg gandime
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#2

Re: wie versende ich mit tclient/serversocket eine datei?

  Alt 9. Sep 2006, 00:40
Jo,

kommt darauf an.

Beispielsweise mit .sendstream .

der flossinger
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#3

Re: wie versende ich mit tclient/serversocket eine datei?

  Alt 9. Sep 2006, 09:24
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;
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#4

Re: wie versende ich mit tclient/serversocket eine datei?

  Alt 9. Sep 2006, 10:58
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:
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;
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.

grüsse,
der flossinger
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#5

Re: wie versende ich mit tclient/serversocket eine datei?

  Alt 9. Sep 2006, 12:41
ich verstehe ich ganz wie das funktionieren soll

client:
Delphi-Quellcode:
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;
server:
Delphi-Quellcode:
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;
blos wo is da der fehler?
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#6

Re: wie versende ich mit tclient/serversocket eine datei?

  Alt 9. Sep 2006, 13:22
Zitat von gandime:
ich verstehe ich ganz wie das funktionieren soll
blos wo is da der fehler?
ja von welchem Fehler sprichst du denn? Vielleicht machst du dir mal die Mühe Fehlermeldungen zu lesen und bei deinen Hilferufen wörtlich zu posten.

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
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: wie versende ich mit tclient/serversocket eine datei?

  Alt 9. Sep 2006, 13:44
Zitat von flossinger:
Delphi-Quellcode:
procedure log(text:string);
begin
form1.memo1.lines.add(text);
end;
Für einen Anfänger ein mehr als schlechtes Beispiel: Nutze niemals eine Instanzenvariable direkt für den Zugriff auf Elemente der Klasse. Wenn, schreibe eine Methode und lass bloss die Instanzenvariable aus dem Spiel!

@Threadersteller:
http://www.delphipraxis.net/internal...ct.php?t=81128
http://www.delphipraxis.net/internal...ct.php?t=53882
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#8

Re: wie versende ich mit tclient/serversocket eine datei?

  Alt 9. Sep 2006, 14:14
also:

Zitat von flossinger:
Was soll .connect(5000) bewirken? ist unverständlich.
ich kenne leider den tserversocken und clientsocket nicht so besonders gut und deshalb wusste ich nicht, dass wenn der client aktiviert wird, dass er sofort connectet.

Zitat von flossinger:
.receivebuf verlangt als 1. Parameter einen bufferpointer, keinen stream.
ja tut mir leid habe ich nicht dran gedacht

Zitat von flossinger:
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.
also dazu
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
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#9

Re: wie versende ich mit tclient/serversocket eine datei?

  Alt 9. Sep 2006, 14:17
ja fein,
dann läuft ja alles bestens

der flossinge
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#10

Re: wie versende ich mit tclient/serversocket eine datei?

  Alt 9. Sep 2006, 14:26
@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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:09 Uhr.
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