![]() |
Streams versenden (Ohne Indy's)
Gibt es irgendwelche Komponenten oder Möglichkeiten Streams und Text durch das Internet zu senden und zu empfangen ? Delphi 3 und Indy's vertragen sich nämlich nicht :roll:
|
Re: Streams versenden (Ohne Indy's)
Bei Delphi 3 Professional sind doch die Fastnet Komponenten dabei, wenn mich nicht alles täuscht.
|
Re: Streams versenden (Ohne Indy's)
Ok dann 2 Fragen :
Sind das die Komponenten unter "Internet" oder was ? Ansonsten kann es auch sein das ich zu blöd bin die zu finden :roll: Da ich mich mit Streams und so (noch) nicht wirklich auskenne wäre ich dankbar dafür wenn jemand mir zeigen könnte wie das alles so im Prinzip funktioniert. |
Re: Streams versenden (Ohne Indy's)
senden:
Delphi-Quellcode:
und hier empfangen
uses Classes, ScktComp;
const BufferSize = 8192; type TTSendStream = class(TThread) private FSocket: TCustomWinSocket; FStream: TStream; FRunning: Boolean; public constructor Create(CreateSuspended: Boolean; Socket: TCustomWinSocket; SourceStream: TStream); property Running : Boolean read FRunning; protected procedure Execute; override; end; implementation //------------------------------------------------------------------------------ // TTSendStream //------------------------------------------------------------------------------ constructor TTSendStream.Create(CreateSuspended: Boolean; Socket: TCustomWinSocket; SourceStream: TStream); begin FRunning := True; FSocket := Socket; FStream := SourceStream; inherited Create(CreateSuspended); end; //------------------------------------------------------------------------------ procedure TTSendStream.Execute; var chunks, i, BytesRead, BytesWritten: Integer; Bfr: Pointer; begin GetMem(Bfr, BufferSize); chunks := Ceil(FStream.Size / BufferSize); for i:=0 to chunks-1 do begin BytesRead := FStream.Read(Bfr^ , BufferSize); BytesWritten := FSocket.SendBuf(Bfr^, BytesRead); //Wenn Winsock Buffer voll, retry... while BytesRead <> BytesWritten do begin sleep(100); BytesWritten := FSocket.SendBuf(Bfr^, BytesRead); end; end; FreeMem(Bfr); FRunning := False; //------------------------------------------------------------------------------ //--- USAGE //------------------------------------------------------------------------------ Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); Thread := TTSendStream.Create(False, Socket, Stream); while Thread.Running do begin Application.ProcessMessages; sleep(10); end; Thread.Free; Stream.Free; end;
Delphi-Quellcode:
sind code snippets aus den projekt... also musst du für deine bedürnisse evtl noch anpassen.... aber zumindest von grundprinzip...
while FormPos < FormSize do
if fConnectionFormData.Socket.ReceiveLength > 0 then begin Len := fConnectionFormData.Socket.ReceiveLength; GetMem(Data, Len); ReadSize := fConnectionFormData.Socket.ReceiveBuf(Data^, Len); Inc(FormPos, ReadSize); Stream.WriteBuffer(Data^, ReadSize); FreeMem(Data); Event(FormTag, FormPos, FormSize); end else sleep(100); grüße paresy |
Re: Streams versenden (Ohne Indy's)
ok Danke ich werde mich mal damit beschäftigen, aber was ist das mit dem Socket ?
Was genau ist das und wofür brauch man das :gruebel: Muss man da ein TCustomWinSocket Object angeben ? :wall: [edit]Bei uses fehlt noch die Unit "Math" :wink: [/edit] |
Re: Streams versenden (Ohne Indy's)
Ja die sollten sich bei "Internet" finden. Sind sie da bei dir nicht? Und obiger Code braucht bestimmt kein math - es sei denn ich habe da eben was übersehen.
|
Re: Streams versenden (Ohne Indy's)
ich brauchte Math wegen "Ceil" :wink:
|
Re: Streams versenden (Ohne Indy's)
Wollte gerade sagen, obiger Code braucht nämlich kein [u]math[i].
|
Re: Streams versenden (Ohne Indy's)
Zitat:
wegen dieser Zeile :
Delphi-Quellcode:
aber ich habe noch eine Frage zu dem Empfangen. Mit dem was da steht kann ich leider rein gar nichts anfangen :wall:
chunks := Ceil(FStream.Size / BufferSize);
|
Re: Streams versenden (Ohne Indy's)
Mist. :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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