AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi ServerSocket & ClientSocket Stream
Thema durchsuchen
Ansicht
Themen-Optionen

ServerSocket & ClientSocket Stream

Ein Thema von SyntaxXx · begonnen am 9. Jun 2014 · letzter Beitrag vom 12. Jun 2014
Antwort Antwort
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#1

ServerSocket & ClientSocket Stream

  Alt 9. Jun 2014, 15:35
Guten Tag zusammen,
ich bin gerade dabei eine Server, Client - Anwendung zu schreiben.
Dazu benutze ich die Komponenten ServerSocket und ClientSocket.

Nun möchte ich eigentlich gerne ein Record bzw. alternativ ein Array of String versenden.
Und zwar vom Server zum Client.

Dazu benutze ich folgenden Code im ServerSocket:
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var paramRec: TParamRec;
    ms: TMemoryStream;
    ar: Array [0..4] of String;
begin
  ms := TMemoryStream.Create;
  paramRec.param1 := 'Hello';
  paramRec.param2 := 'World';
  ms.Write(paramRec, SizeOf(paramRec));
  ms.Position := 0;
  ServerSocket1.Socket.Connections[0].SendStream(ms);
end;

Das Problem ist, dass ich nicht weiß, wie ich dem Stream im ClientSocket abfange.
Ich hab es jetzt mal so vesucht, aber bekomme ich da nichts gescheites bei raus, bzw. weiß nicht, wie ich den Stream wieder zu nem Record bekomme.
Alternativ wenns einfacher geht, würde auch ein Array of String gehen.

Delphi-Quellcode:
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
var paramRec: TParamRec;
    ms: TMemoryStream;
begin
  ms := TMemoryStream.Create;
  ms.Position := 0;

  Socket.ReceiveBuf(ms, Socket.ReceiveLength);
end;
Ich hoffe, ihr könnt mir helfen.
Das Senden und Empfangen von einzelnen Strings via "SendText" funtkioniert wurnderbar.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#2

AW: ServerSocket & ClientSocket Stream

  Alt 10. Jun 2014, 07:19
Tipp: mit Internet Direct (Indy) ist das Senden von Streams über TCP wesentlich einfacher als mit den ("deprecated") TClient/TServerSockets.
Michael Justin
  Mit Zitat antworten Zitat
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#3

AW: ServerSocket & ClientSocket Stream

  Alt 10. Jun 2014, 17:24
Meinst du damit die IdTCPServer & IdTCPClient Komponente?
Wenn ja, mit denen habe ich es schon versucht.

Es stimmt, streams lassen sich damit einfach versenden, aber für den Rest sind sie meiner Meinung nach schlechter.
Eine Nachricht von Client zum Server geht, aber vom Server eine Antwort zu einem bestimmten Client finde ich sehr schwer bis überhaupt nicht möglich.

Zudem hat der Server zwar eine Execute Methode, aber der Client nicht.
Da muss man entweder mit nem Timer arbeiten, oder mühsam einen extra Thread dafür erstellen.

Bei den Sockets gibt es da auf beiden Seite die OnRead Methode und das versenden in beide Richtungen ist auch ganz einfach. Nur mit Streams ist das so eine Sache.
  Mit Zitat antworten Zitat
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#4

AW: ServerSocket & ClientSocket Stream

  Alt 10. Jun 2014, 20:41
Ich möchte an dieser Stelle darauf hinweisen, dass du auch die Strings im Rekord einzellnt senden musst, da sonst nur die (nutzlosen) Adressen übertragen werden, aber das ist dir natürlich klar und da
Zitat:
Das Senden und Empfangen von einzelnen Strings via "SendText" funtkioniert wurnderbar.
sollte das auch kein Problem für dich darstellen.
Lars
There are 10 kinds of people in the world:
those who get binary, and those who don’t.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: ServerSocket & ClientSocket Stream

  Alt 11. Jun 2014, 07:47
Vielleicht hilft dieses Tutorial von Narses?
Ralph
  Mit Zitat antworten Zitat
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#6

AW: ServerSocket & ClientSocket Stream

  Alt 11. Jun 2014, 16:21
Ok, da hast du recht.
Records kann ich ganz einfach senden

Nun möchte ich aber auch gerne noch ein Bild (Bitmap) versenden.
Habt ihr dafür gerade eine Lösung parat ?
  Mit Zitat antworten Zitat
newbe

Registriert seit: 14. Okt 2008
143 Beiträge
 
Delphi 7 Personal
 
#7

AW: ServerSocket & ClientSocket Stream

  Alt 12. Jun 2014, 06:14
ja du könntest das bitmapfile base64 encodieren und einfach als string übertragen. Im Prinzip kannste damit alles in einem TStringStream übertragen.

mfg newbe

Geändert von newbe (12. Jun 2014 um 06:17 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:14 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