Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Mein Protokoll für TServerSocket und TClientSocket (https://www.delphipraxis.net/100530-mein-protokoll-fuer-tserversocket-und-tclientsocket.html)

Jackie1983 29. Sep 2007 18:22


Mein Protokoll für TServerSocket und TClientSocket
 
hi,

baue eine verbindung mit Server und Clientsocket auf.
Befehle werde in diese art versendet
COMMAND|Daten|parameter|ende

So weit so gut. Alles funktioniert reibungslos.
Wenn ich größeren Texte bei Daten versende kommt nur die hälfte an.
Denke mal das nur 255 zeichen gesendet werden, oder?

Kümmern die Socket sich selbst um die größe? das heist wird dieser Text
in zwei oder drei Pakete aufgeteilt?
z.b so
Paket 1 COMMAND|langer text......
Paket 2 ....text|parameter|ende

thkerkmann 29. Sep 2007 18:40

Re: Mein Protokoll für TServerSocket und TClientSocket
 
Zitat:

Zitat von Jackie1983
Denke mal das nur 255 zeichen gesendet werden, oder?

Kümmern die Socket sich selbst um die größe? das heist wird dieser Text
in zwei oder drei Pakete aufgeteilt?
z.b so
Paket 1 COMMAND|langer text......
Paket 2 ....text|parameter|ende

Es wird sicher mehr gesendet. Die Sockets kümmern sich darum schon.

Aber:

wie sieht deine Empfangsroutine aus ?

So etwa sollte das sein:

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
 s: string;
begin
  while Socket.ReceiveLength > 0 do
    s := s + Socket.ReceiveString;

  // jetzt sollte s vollständig sein.
end;
Damit stellst Du sicher, dass die Aufteilung der Daten beim Senden wieder zusammengeführt wird, und längere Datensätze auch vollständig ankommen.

Jackie1983 30. Sep 2007 00:57

Re: Mein Protokoll für TServerSocket und TClientSocket
 
hi,

habe meine routine jetzt abgeändert.
Delphi-Quellcode:
  while Socket.ReceiveLength > 0 do
    s := s + Socket.ReceiveText;
  ParseText(Socket,s);
funktioniert wunderbar.

thx


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:02 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