![]() |
Stream über TCP an Rechner schicken
:)
Ich hab die DP lange durchsucht. Ich möchte mit den Indys eine EXE mit einem Server und eine mit einem Client machen. Beide sind nicht im selben lokalen Netzwerk, sondern irgendwo im Internet. Über die IP möchte ich gerne Pakete via TCP senden und empfangen. Mit einem Stream natürlich. Dieser Stream soll die Überwachungsbilder einer Webcam anzeigen. Doch ich habe nirgends ein komplettes Beispiel gefunden, wie man Streams erstellt, übergibt, etc. Hab halt noch nie etwas mit Streams gemacht. Wäre über jedes Beispiel dankbar. :) |
Re: Stream über TCP an Rechner schicken
Hey! Guck dir einfach diesen Code an:
![]() Dort wird eine Datei in einen Filestream geladen und versendet. Du kannst aber jeden beliebigen Stream versenden, also auch einen MemoryStream:
Delphi-Quellcode:
procedure TSendeForm.DateiSendeButtonClick(Sender : TObject); var MStream: TMemoryStream; IDS: TidStreamVCL; begin { Hier wird die Datei "ermittelt" } TCPSender.Host := HostEdit.text; { Die Streams initialisieren - Beim IDS wird FStream gleich eingelesen } MStream := TMemoryStream.create; //jetzt irgendwas in den Stream laden, beispeilsweise ein Bild, oder so: aBitmap.savetostream(MStream); //nun den Stream versenden: try IDS := TidStreamVCL.Create(MStream); try { Senden } with TCPSender do begin Connect; try Socket.Write(IDS, 0, true); finally Disconnect; end; end; finally FreeAndNil(IDS); end; finally FreeAndNil(FStream); end; end; Empfänger läuft so:
Delphi-Quellcode:
Ist eig. ziemlich einfach und alles(!!) im Forum zu finden...
procedure TEmpfangsForm.TCPReceiverExecute(AContext: TIdContext);
var MSTream: TMemoryStream; SizeOfIncomingStream: Integer; IDS: TidStreamVCL; begin { Wo soll die Datei gespeichert werden? } { Wieder die Streams } MStream := TMemoryStream.create; IDS := TidStreamVCL.Create(FStream); try { Empfangen } with AContext.connection do begin try SizeOfIncomingStream := Socket.ReadInteger; Socket.ReadStream(IDS, SizeOfIncomingStream); finally Disconnect; end; end; { Damit der Inhalt von IDS in FStream übertragen wird } IDS.VCLStream.Position := 0; finally FreeAndNil(IDS); end; //jetzt kannste irgendetwas mit dem Stream machen, z.B. wieder in ein bitmap laden: aBitmap:=TBitmap.create; aBitmap.loadfromstream(MStream); end; LG, Alleinherrscher |
Re: Stream über TCP an Rechner schicken
Supi, nur leider gibt es ein kleines Problem.
Delphi-Quellcode:
Habe alle Threads darüber gelesen. Aber eine funktionierende Lösung gab es nicht. :( Ich habe Delphi 7 + Indy 10. Nun weiß ich ja nicht, auf welche Alternativen ich zurückgreifen kann bei einem Videostream.
[Error] Unit1.pas(227): Undeclared identifier: 'TidStreamVCL'
|
Re: Stream über TCP an Rechner schicken
in die Useslist eingefügt, IdGlobal dabei??
|
Re: Stream über TCP an Rechner schicken
idglobal und IdStreamVCL hab ich drin
wi gesagt. die normalen möglichkeiten funzen nicht :( |
Re: Stream über TCP an Rechner schicken
schau mal
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:01 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