Einzelnen Beitrag anzeigen

sonny2007

Registriert seit: 27. Aug 2009
39 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Server/Client kleine Pakete sehr oft an mehrere Clienten

  Alt 4. Jan 2017, 20:03
Hiho Zusammen,

ich habe ein Problem mit dem Datenaustausch zwischen mehreren Clienten über einen Server.

Folgendes Szenario

Client 1, Client 2, Client 3
| | |
Server TCP Indy

Jeder Client sendet alle 100-200ms ein Buffer oder Stream von ca 0,2-0,6KByte.

Diese sollen dann vom Server an alle anderen Clienten verteilt werden.

Welcher Lösungsansatz ist der Richtige?
ist TCP die richtige Wahl ?

Folgendes habe ich bisher probiert.
per Stream

Delphi-Quellcode:
....

    ms := TMemoryStream.Create;
    Try
      ms.Write(tmpClient, SizeOf(tmpClient));
      if (SendStream(IdClient, TStream(ms)) = False) then
        Exit;
    Finally
      ms.Free;
    End;

    ms := TMemoryStream.Create;
    Try
      if (ReceiveStream(IdClient, TStream(ms)) = False) then
        Exit;

      //slServerLog.Add('Receive StreamSize ' + IntToStr(ms.Size));
      SetLength(arClients, ms.Size div SizeOf(arClients[0]));
      // Setzen der Anzahl der Elemente im Array
      ms.Position := 0;
      for i := 0 to High(arClients) do
        ms.Read(arClients[i], SizeOf(arClients[i]));
    finally
      ms.Free;
    end;
per Buffer mit Protokoll, was jedoch extrem langsam ist. Habe das Gefühl das es sich eher für Messenger eignet.
Kann aber auch an meiner Unwissenheit liegen.

Grüße
sOn
  Mit Zitat antworten Zitat