Entwickler-Ecke
Internet / Netzwerk - Über Delphi7 Tcp Socket eine Timage übertragen
Sithlord - Mi 21.10.09 01:51
Titel: Über Delphi7 Tcp Socket eine Timage übertragen
Hallo Mitglieder,
habe um diese frühe Uhrzeit schon die Suche bemüht um einen Weg zu finden, ein auf der Form plazierte Timage komponente per TCP-IP iwohin zu übertragen. Das Iwohin beläuft sich auf eine andere Form eines anderen Programmes, wieder in eine Timage komponente.
Wie ist sowas möglich? Es sollte auch nicht "lange" dauern, eh das bild da ist.
Welche Ansätze gibt es da um was zu verschicken?
Ich verlange keinen ganzen QUellcode, für kleinere Tipps und Kniffe vl. auch bisschen Quellcode wäre ich dankbar, aber ich will Delphi lernen und möchte es deswegen selbst versuchen, auch wenn es nicht klappen sollte.
Mfg Kalle
Sithlord - Mi 21.10.09 12:04
WoW danke, ich lasse die Frage aber trotzdem nochmal offen - nun heißt es sich belesen ^^
Sithlord - Mi 21.10.09 13:30
Sooo,
hab mich mal selbst bemüht und fast Erfolg gehabt ;)
Dies sendet mir es an meinen Server:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Timer1Timer(Sender: TObject); var stream:tstream; begin MakeScreenShot(Image1.Picture.Bitmap); Image1.Repaint; Stream := TMemoryStream.Create; Stream.Position := 0; image1.Picture.Graphic.SaveToStream(stream); client.Socket.SendStream(stream); stream.Free; end; |
Und dieses lässt es beim Server auslesen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.serverClientWrite(Sender: TObject; Socket: TCustomWinSocket); var stream:tstream; Buffer: array of Byte; Len: Int64; begin Stream := TMemoryStream.Create; Len := Socket.ReceiveLength; SetLength(Buffer, Len); try Len := Socket.ReceiveBuf(Buffer[0], Len); if Len > 0 then Stream.Write(Buffer[0], Len); finally SetLength(Buffer, 0); image1.Picture.Graphic.LoadFromStream(stream); Image1.Repaint; stream.Free; end; end; |
Mfg Kalle
Edit: Hat sich herausgestellt eben dass sie auf einmal nicht mehr mit Fehlern um sich werfen sondern der Client mir sagt "invalid pointer operation" o.ä. ;)
Fällt euch dazu was ein?
Xentar - Mi 21.10.09 13:52
Wie in dem anderen Thread
http://www.delphi-forum.de/viewtopic.php?t=94722
schon erwähnt, musst du erst die Länge als Integer bzw. Int64 schicken, und dann auf Empfängerseite diese Anzahl an Zeichen warten und einlesen.
Hat also nichts mit ReceiveLength zu tun.
Sithlord - Mi 21.10.09 14:00
Mhhh stimmt auch wieder, nach reichlichem belesen.
Aber ich stehe auch iwie auf dem schlauch, wie ich die Länge mitgeben soll...
Naja ich sollte wohl nicht solche Projekte machen ^^. Aber wir müssen wegen der Schule screenshots verschicken, der lehrer meinte dies sei leicht -.-
Aber iwie komm ich da nicht weiter, auch wenn ich jetzt weiß dass es stück für stück auslesen muss.
Bloß wie stück für Stück und dann noch die richtige Länge?
Moderiert von
Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
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!