AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Dateisenden per TSocketServer/Client
Thema durchsuchen
Ansicht
Themen-Optionen

Dateisenden per TSocketServer/Client

Ein Thema von night · begonnen am 28. Jul 2007 · letzter Beitrag vom 28. Jul 2007
Antwort Antwort
night

Registriert seit: 23. Jun 2006
22 Beiträge
 
Turbo Delphi für Win32
 
#1

Dateisenden per TSocketServer/Client

  Alt 28. Jul 2007, 14:50
Hi, ich veruche eine einfache Datei zu versenden,per TSocketserver/Client. Ich habs auch schon mit den Indys versucht, aber da läuft gar nichts. Selbst bei den Demos kommen viele Fehlermeldungen ... dann habe ichs so versucht:

http://www.dsdt.info/tutorials/winsocket/?page=4

Das Sendtext hat wunderbar funktioniert. Leider geht das mit dem Record nicht so. Ich habe auch hier schon ein paar Lösungswege gefunden, doch leider lief das alles nicht .

Mein Record:

Delphi-Quellcode:

  TSendDatei = record
    FName: String[20];
    Datei: TMemoryStream;
Server
Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var Data: TSendDatei;
begin
  Data.Datei.Create;
  Socket.ReceiveBuf(Data,Sizeof(Data));
  Caption := Data.FName;
  Data.Datei.SaveToFile(Data.FName);
  Data.Datei.Free;
end;
Client
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Data: TSendDatei;
begin
  if Opendialog1.Execute then
  begin
    Data.Datei := TMemorystream.Create;
    Data.Datei.LoadFromFile(Opendialog1.FileName);
    Data.FName := Opendialog1.FileName;
    ClientSocket1.Open;
    ClientSocket1.Socket.SendBuf(Data,Sizeof(Data));
    ClientSocket1.Close;
    Data.Datei.Free;
  end;
end;
Es passiert gar nichts. Nichtmal die Caption wird verändert!
Ich hoffe ihr könnt mir weiter helfen.

Mfg night
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#2

Re: Dateisenden per TSocketServer/Client

  Alt 28. Jul 2007, 15:35
hab nur mal kurz drübergeschaut und beim server muss es nicht
Data.Datei.Create; sondern
Data.Datei := TMemorystream.Create; heißen

//edit:
1. würd ich des auch alles unter try finally tun weil es sonst sein könnte des es nicht freigegeben wird
2. ich glaub nicht das das so funkt da imho im record nur der pointer auf die daten gespeichert wird und der auf einem anderen pc natürlich nicht gültig ist
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Dateisenden per TSocketServer/Client

  Alt 28. Jul 2007, 15:49
Der angesprochene 2. Punkt gilt vor allem auch für den Memorystream im Record. Dort wird nur die Instanzenadresse übertragen aber nicht die Instanz geschweige denn die Daten.
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:27 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