Entwickler-Ecke
Internet / Netzwerk - Problem mit dem Stream
Die Brotmafia - Do 29.12.05 18:35
Titel: Problem mit dem Stream
Also, ich hab mich jetzt mal ein bisschen schlau gemacht und hab folgendes gecodet bzw. übernommen:
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:
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
raziel: Code- durch Delphi-Tags ersetzt
Narses - 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 - Do 29.12.05 20:29
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:
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
raziel: Code- durch Delphi-Tags ersetzt
Narses - Fr 30.12.05 00:46
Moin!
TFileStream eingeben und F1 drücken... :wink:
cu
Narses
Die Brotmafia - 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 - Fr 30.12.05 08:54
Wenns nur um die Datei größe geht dann hier ein
bischen Source.
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 - Fr 30.12.05 10:03
Moin!
Die 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:
@
Fighter#1Er hat doch schon ein Streamhandle, wozu dann noch mit FindFirst arbeiten... :wink:
cu
Narses
alzaimar - Fr 30.12.05 10:43
Titel: Re: Problem mit dem Stream
Die Brotmafia hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3:
| ... Socket.SendText('StreamComming'); ... |
|
Wenn schon in Englisch, dann aber richtig: 'Stream Coming' (
http://dict.leo.org/se?lp=ende&p=/Mn4k.&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:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!