AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi ServerSocket1ClientRead
Thema durchsuchen
Ansicht
Themen-Optionen

ServerSocket1ClientRead

Ein Thema von yildi · begonnen am 24. Sep 2006 · letzter Beitrag vom 26. Sep 2006
 
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: ServerSocket1ClientRead

  Alt 24. Sep 2006, 18:45
Zitat von yildi:
nur wie erkenn ich denn, wann die größenangabe nach DATA: zu ende ist ?
Diese Frage bleibt offen und genauso ist die Sache mit abprüfen ob vorne "DATA" steht, genauso schwachsinnig. Damit würdest du jede Binärdatei vor der Übertragung ausschliessen, welche mit "DATA" anfängt oder dieses Wort enthält. Schick mal den Text dieses Threads über den Socket und du wirst ein Problem bekommen.

@yildi:
Schick vor dem Stream einfach dessen Grösse mit:
Delphi-Quellcode:
Var
  lSize: Int64;
Begin
  lSize := Stream.Size; // Grösse der zu sendenen Datei
  Socket.SendBuf(lSize, SizeOf(lSize)); // Grösse vorneweg schicken
  Socket.SendStream(Stream);
End;
Beim Empfänger:
Delphi-Quellcode:
  fSize : Int64; // als Klassenmitglied deklarieren
  fReceiveStream: TStream; // dito
...

Procedure SocketEmpfangen(...)
Var
  lBuff: Pointer;
  lSize: Int64;
Begin
  If Not Assigned(fReceiveStream) And ( Socket.ReceiveLength >= SizeOf(Int64) ) Then
  Begin
    Socket.ReceiveBuf(fSize, SizeOf(fSize));
    fReceiveStream := {TMemoryStream}TFileStream.Create(...);
  End
  Else If Assigned(fReceiveStream) Then
  Begin
    lSize := Min(fSize - fReceiveStream.Size, Socket.ReceiveLength);
    lBuff := GetMem(lSize);
    Try
      Socket.ReceiveBuf(lBuff^, lSize);
      fReceiveStream.WriteBuffer(lBuff^, lSize);
    Finally
      FreeMem(lBuff);
    End;

    If ( fReceiveStream.Size = fSize ) Then
    Begin
      FreeAndNil(fReceiveStream);
      fSize := 0;
    End;
  End;
End;
ein kleiner Pseudocode um dies zu verdeutlichen...
  Mit Zitat antworten Zitat
 


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 06:54 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