AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Streams versenden (Ohne Indy's)
Thema durchsuchen
Ansicht
Themen-Optionen

Streams versenden (Ohne Indy's)

Ein Thema von Neutral General · begonnen am 20. Dez 2004 · letzter Beitrag vom 21. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Streams versenden (Ohne Indy's)

  Alt 20. Dez 2004, 16:06
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
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Streams versenden (Ohne Indy's)

  Alt 20. Dez 2004, 16:09
Bei Delphi 3 Professional sind doch die Fastnet Komponenten dabei, wenn mich nicht alles täuscht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Streams versenden (Ohne Indy's)

  Alt 20. Dez 2004, 16:13
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

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.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
paresy

Registriert seit: 24. Aug 2004
Ort: Lübeck
105 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Streams versenden (Ohne Indy's)

  Alt 20. Dez 2004, 16:14
senden:

Delphi-Quellcode:
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;
und hier empfangen

Delphi-Quellcode:
   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);
sind code snippets aus den projekt... also musst du für deine bedürnisse evtl noch anpassen.... aber zumindest von grundprinzip...

grüße paresy
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Streams versenden (Ohne Indy's)

  Alt 20. Dez 2004, 16:23
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
Muss man da ein TCustomWinSocket Object angeben ?

[edit]Bei uses fehlt noch die Unit "Math" [/edit]
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Streams versenden (Ohne Indy's)

  Alt 20. Dez 2004, 16:26
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Streams versenden (Ohne Indy's)

  Alt 20. Dez 2004, 16:28
ich brauchte Math wegen "Ceil"
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Streams versenden (Ohne Indy's)

  Alt 20. Dez 2004, 16:32
Wollte gerade sagen, obiger Code braucht nämlich kein [u]math[i].
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Streams versenden (Ohne Indy's)

  Alt 20. Dez 2004, 16:35
Zitat von Luckie:
Wollte gerade sagen, obiger Code braucht nämlich kein [u]math[i].
Doch

wegen dieser Zeile :

chunks := Ceil(FStream.Size / BufferSize); aber ich habe noch eine Frage zu dem Empfangen. Mit dem was da steht kann ich leider rein gar nichts anfangen
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Streams versenden (Ohne Indy's)

  Alt 20. Dez 2004, 16:53
Mist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 12:47 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