Hallo!
Ich habe mehrere Threads in meinem Programm, die bestimmte Informationen aus dem Internet sammeln und diese dann in eine Liste hinzufügen. Einen anderen Thread prüft ständig, ob die Daten in der Liste vorhanden sind und versendet diese über TServerSocket an alle verbundenen Clients. Das Problem ist, dass von 50 gesendeten Datensätzen nur 15-20 den Ziel erreichen. Woran kann das liegen?
Gesendet wird so:
Delphi-Quellcode:
for i := frmMain.ServerSocket1.Socket.ActiveConnections - 1 downto 0 do
frmMain.ServerSocket1.Socket.Connections[i].SendText(TextToSend);
Empfangen wird so:
Delphi-Quellcode:
procedure Tm_w.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
Data: string;
begin
Data := RestData + Socket.ReceiveText; //RestData wird global deklariert
RestData := '';
while Pos(#13#10, Data) > 0 do
begin
ListBox1.Items.Add(Copy(Data, 1, Pos(#13#10, Data) - 1);
Delete(Data, 1, Pos(#13#10, Data) + 1);
end;
if Length(Data) > 0 then RestData := Data;
end;