Autor Beitrag
Die Brotmafia
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Win XP Suse Linux 9.3
Delphi 7 Enterprise, Delphi 2005
BeitragVerfasst: Do 29.12.05 18:35 
Also, ich hab mich jetzt mal ein bisschen schlau gemacht und hab folgendes gecodet bzw. übernommen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
    if text='SendFile'
     then begin
      Socket.SendText('StreamComming');
      Sleep(300);
      Fstream:=TFileStream.Create('C:\datei.txt', fmOpenRead);
      Socket.SendStream(FStream);
     end;


So, die datei C:\datei.txt ist natürlich da ;)


Jetzt wird der Stream empfangen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
    if('StreamComming' = copy(text,0,13)) then begin
     Fstream:=TFileStream.Create('C:\Datei2.txt', fmOpenWrite);
     SizeofFile:=Socket.ReceiveLength;
     GetMem(pBuffer, SizeofFile);
     try
      Socket.ReceiveBuf(pBuffer^,SizeofFile);
      Fstream.Write(pBuffer^,SizeofFile);
       finally
        FreeMem(pBuffer);
        FStream.Free;
       end;
      end;


Hm, wenn ich das ganze jetzt ausführe passiert einfach nichts, auf c:\ sind die dateien datei1.txt und datei2.txt, in der datei1.txt steht test, in der datei2.txt steht nichts, wenn ich jetzt das programm starte ist alles genau so wie es vorher war, keine änderung, obwohl doch jetzt eigentlich auch in der datei2.txt test stehen müsste?
Hoffe mal ihr könnt mir helfen, ich probier auch noch n bisschen rum, vielleicht komm ich ja noch drauf ^^

thnx!

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 29.12.05 19:06 
Moin!

Du mußt vorher noch die Länge des Streams schicken und in einer Schleife bis zum Erreichen dieser Länge empfangen (siehe letzten Thread dazu...).

cu
Narses
Die Brotmafia Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Win XP Suse Linux 9.3
Delphi 7 Enterprise, Delphi 2005
BeitragVerfasst: Do 29.12.05 20:29 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
    if text='GetFile'
     then begin
      socket.SendText('ScreenComming');
      socket.SendText(GRÖßE DES STREAMS DA!)
      FStream := TFileStream.Create('C:\screenshot.bmp', fmOpenRead);
      socket.SendStream(Fstream);
    end;


Wie kann ich die größe des Streams versenden, also wie kann ich die größe herausfinden lassen?


Im Client würd ichs dann so machen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
     if('ScreenComming' = copy(text,0,length(text))) then
     begin
      repeat
       pBuffer:=@Buffer;
       SizeofBuffer:=Socket.ReceiveBuf(pBuffer^, 4096);
       FileStream.Write(pBuffer^, SizeofBuffer);
       Inc(AlreadyReceived, SizeofBuffer);
       Socket.Sendtext(InttoStr(AlreadyReceived));
      until
       GrößedesStreams:='Streamgröße';
     end;


Wie kann ich die größe der Datei bestimmen? Ansonsten gehts schon soweit, nur hört das Programm halt nicht dann auf wenn ichs gerne hätte und stürtzt dann natürlich ab ^.^

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 30.12.05 00:46 
Moin!

TFileStream eingeben und F1 drücken... :wink:

cu
Narses
Die Brotmafia Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Win XP Suse Linux 9.3
Delphi 7 Enterprise, Delphi 2005
BeitragVerfasst: Fr 30.12.05 01:18 
Hab ich gemacht, da steht aber nicht wie ich die Größe des Streams bzw. der Datei finden kann, vielleicht bin ich auch nur zu dumm es zu finden..
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Fr 30.12.05 08:54 
Wenns nur um die Datei größe geht dann hier ein
bischen Source.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function Dateigroesse (Datei : String) : Integer;
var SRec: TSearchRec;  
begin  
  Result := -1;  
  if FindFirst(Datei, faAnyFile, SRec) = 0 then  
  try Result := SRec.Size finally FindClose(SRec) end;  
end;


Das nächste mal einfach suchen ...
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 30.12.05 10:03 
Moin!

user profile iconDie Brotmafia hat folgendes geschrieben:
Hab ich gemacht, da steht aber nicht wie ich die Größe des Streams bzw. der Datei finden kann, vielleicht bin ich auch nur zu dumm es zu finden..

...(Fortsetzung) dann auf Eigenschaften klicken und links "Size" auswählen, da werden sie geholfen... :wink:

@user profile iconFighter#1Er hat doch schon ein Streamhandle, wozu dann noch mit FindFirst arbeiten... :wink:

cu
Narses
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 30.12.05 10:43 
user profile iconDie Brotmafia hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
...
   Socket.SendText('StreamComming'); 
...


Wenn schon in Englisch, dann aber richtig: 'Stream Coming' (dict.leo.org/se?lp=e...k.&search=coming). Was aber auch falsch ist. Besser wäre 'Incoming Stream' oder 'Stream arriving'. Letztendlich ist es natürlich egal, den den Compiler will ich sehen, der Rechtschreibung und Grammatik bemängelt. :wink:

_________________
Na denn, dann. Bis dann, denn.