Zitat:
Da das Lesen schon in einem eigenen Thread läuft, wird der Hauptthread (sofern keine "Synchronize"-Fehler gemacht werden) nicht blockiert.
Ja, aber wenn man die Zugriffe absichern würde, dann würde die CriticalSection den anderen Thread blockieren.
Daher mein Vorschlag je Richtung eine threadlokale Komponente zu verwenden.
Man kann auch in beide Richtungen einen Server-Client aufmachen, dann brauchst du nicht zu pollen, da der "Server" im Client dann via Empfangsereignis reagiert.
Indy hat im Gegensatz zu anderen Komponenten kein Epfangsereignis. Wenn der Server etwas an den
Indy Client sendet, liest man diese Daten aus dem Socket (über IOHandler.Read). Dies kann je nach verwendetem Protokoll in einer Schleife geschehen. Eine andere Möglichkeit gibt es mit
TCP generell nicht - man muss immer eine Leseoperation auf den Socket machen, um Daten von der Gegenseite zu erhalten. (Das ist kein "Pollen", da man dabei keine Pakete an den Server sendet.)