Hi!
Ich habe einen TThread, der mit einem blockierendem Socket auf Daten wartet:
Delphi-Quellcode:
procedure MeinThread.Execute;
var i: integer;
begin
repeat
i := recv(sock, ...); //block
if i > 0 then
begin
...
end;
until i <= 0;
end;
Jetzt möchte ich z.B. alle 5 Sekunden etwas durch den Socket senden. Ich habe gelesen, dass es mit SetTimer gehen könnte, aber dafür wird eine Nachrichtenschleife benötigt und diese kann ja nicht immer ablaufen, da der Aufruf von recv blockiert, wenn keine Daten empfangen werden.
Schleife + Sleep funktioniert deshalb ja auch nicht...
Was gibt es sonst noch für Möglichkeiten, ohne einen weiteren Thread zu starten bzw. auf nicht-blockierende Sockets umzustellen?