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