AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Transfer von Daten mit Pause bzw. Abbrech Button
Thema durchsuchen
Ansicht
Themen-Optionen

Transfer von Daten mit Pause bzw. Abbrech Button

Ein Thema von bladecs · begonnen am 31. Okt 2005 · letzter Beitrag vom 19. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
bladecs

Registriert seit: 10. Sep 2005
23 Beiträge
 
Delphi 6 Personal
 
#1

Transfer von Daten mit Pause bzw. Abbrech Button

  Alt 31. Okt 2005, 18:50
Ich suche nach einer Möglichkeit, Daten über ein TServersocket an einen TClientsocket zu versenden. Man sollte jedoch zudem die Mögl. haben, den Transfer zu "pausieren" und abzubrechen.

Thx im Voraus
  Mit Zitat antworten Zitat
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Transfer von Daten mit Pause bzw. Abbrech Button

  Alt 31. Okt 2005, 19:02
Datei verschicken wurde grade gelöst
http://www.delphipraxis.net/internal...ct.php?t=66969

Mit nem Abbrechen-Button weiß ich leider nicht...
gut wär auch noch ein fortschrittsbalken
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
bladecs

Registriert seit: 10. Sep 2005
23 Beiträge
 
Delphi 6 Personal
 
#3

Re: Transfer von Daten mit Pause bzw. Abbrech Button

  Alt 31. Okt 2005, 19:10
Das verschicken ist ja kein Problem, nur ich weiß nicht, wie ich den Transfer abbrechen oder pausieren kann. (Über TServersocket & Tclientsocket)
  Mit Zitat antworten Zitat
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#4

Re: Transfer von Daten mit Pause bzw. Abbrech Button

  Alt 31. Okt 2005, 19:24
Mit der Lösung vom Swissdelphicenter:

Delphi-Quellcode:
var
  Form1: TForm1;
  Abbruch : boolean;

implementation

{$R *.dfm}

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
  iLen: Integer;
  Bfr: Pointer;
begin
  iLen := Socket.ReceiveLength;
  GetMem(Bfr, iLen);
  try
    IF Abbruch THEN exit;
    Socket.ReceiveBuf(Bfr^, iLen);
    FStream.Write(Bfr^, iLen);
  finally
    FreeMem(Bfr);
  end;
end;
und dann noch auf einen Button legen "Abbruch := True"...
Gruß St.Pauli
  Mit Zitat antworten Zitat
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Transfer von Daten mit Pause bzw. Abbrech Button

  Alt 31. Okt 2005, 19:39
Danke, werds so früh wie möglich ausprobieren!
(Wobei beim SDCenter ja eigentlich klar sein sollte, dass es funzt )
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#6

Re: Transfer von Daten mit Pause bzw. Abbrech Button

  Alt 31. Okt 2005, 19:46
Müsste klappen, wenn nicht erst nochmal mit

Delphi-Quellcode:
var
  Abbruch : boolean = False;
probieren - ich weiss nämlich nicht, ob Boolean-Variabeln beim Start True oder False sind.
Gruß St.Pauli
  Mit Zitat antworten Zitat
bladecs

Registriert seit: 10. Sep 2005
23 Beiträge
 
Delphi 6 Personal
 
#7

Re: Transfer von Daten mit Pause bzw. Abbrech Button

  Alt 31. Okt 2005, 22:07
Ich will, dass ich die Dateiübertragung des Servers pausieren/stoppen kann.
Also wenn ich eine Datei vom Server zum Client schicke, möchte ich nicht nur, dass der Client sie nicht annimmt, sondern dass der Server wartet bis der Client wieder bereit ist und erst dann weiter sendet.

Bei eurem Beispiel nimmt er die Daten nur nicht an:

Code:
IF Abbruch THEN exit;
    Socket.ReceiveBuf(Bfr^, iLen);
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#8

Re: Transfer von Daten mit Pause bzw. Abbrech Button

  Alt 31. Okt 2005, 22:16
Zitat von bladecs:
Ich will, dass ich die Dateiübertragung des Servers pausieren/stoppen kann.
Also wenn ich eine Datei vom Server zum Client schicke, möchte ich nicht nur, dass der Client sie nicht annimmt, sondern dass der Server wartet bis der Client wieder bereit ist und erst dann weiter sendet.

Bei eurem Beispiel nimmt er die Daten nur nicht an:

Code:
IF Abbruch THEN exit;
    Socket.ReceiveBuf(Bfr^, iLen);

Das ist richtig, und das soll auch so sein. Stell dir den Socketbuffer wie ein Briefkasten vor. Wenn du nix abholst, füllt sich der Briefkasten eben, solange bis er überläuft (DOS ähhm Spam -Attacke ), oder du deine Briefe komplett abholst.

So funzt das auch mit den Sockets, die werden solange gefüllt bis der Client fertig ist mit senden.

Solange du nix ausließt bleibt alles im Socket. Bis du wieder Socket.ReceiveBuf(Bfr^,iLen); aufrufst.
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
bladecs

Registriert seit: 10. Sep 2005
23 Beiträge
 
Delphi 6 Personal
 
#9

Re: Transfer von Daten mit Pause bzw. Abbrech Button

  Alt 1. Nov 2005, 14:38
thx, nur wie kann ich das Versenden der Datei abbrechen, ohne die Verbindung zu schließen.

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Socket.SendStream(TFileStream.Create('c:\datei.exe', fmOpenRead or fmShareDenyWrite)); // Diesen Transfer möchte ich abbrechen können, ohne die Verbindung zum client zu schließen bzw. den Server zu schließen (also der Server soll die Datei erst gar nicht weiter schicken)
end;
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#10

Re: Transfer von Daten mit Pause bzw. Abbrech Button

  Alt 1. Nov 2005, 15:09
Zitat von bladecs:
thx, nur wie kann ich das Versenden der Datei abbrechen, ohne die Verbindung zu schließen.

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Socket.SendStream(TFileStream.Create('c:\datei.exe', fmOpenRead or fmShareDenyWrite)); // Diesen Transfer möchte ich abbrechen können, ohne die Verbindung zum client zu schließen bzw. den Server zu schließen (also der Server soll die Datei erst gar nicht weiter schicken)
end;

Joa gute frage.. dazu müstes aber diese Procedure anpassen.

Ich würde zb. das mit Write (Methode von TWinSocketStream)versuchen. Man stückelt die Größe des Streams
und schickt zb. immer nur 1 kb.

Dann wird abgefragt ob der User "Stopp den Transfer" gedrückt hat, wenn nicht wieder 1 Kb usw.

Wenn der User abbricht, wird eine Nachricht an den Client verschickt.

Siehe dir mal das Beispiel bei Write(Methode von TWinSocketStream) an.
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:51 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