Leider kann ich dir mit
Indy nicht weiterhelfen. Meine Delphi-Zeiten sind schon länger vorbei.
Üblicherweise bekommst du von einem Serversocket pro Verbindung ein eigenes Socket-Objekt. Die Methode nennt sich accept(). Die zurückgegebenen Sockets repräsentieren dann eine Verbindung zu einem Client. Man händelt also (Anzahl Clients + 1) Sockets in einem Server. Lesen und Schreiben auf solchen Sockets geschieht über read() und write() Methoden (meist blockierend).
Wie das mit
Indy geht; keine Ahnung. Dazu gibt es aber doch sicherlich Beispiele? Google meint, es gibt sogar Thread-Pool Komponenten, die dir einen großen Teil der Arbeit abnehmen. Alternativ kannst du dich ja auch mit low-level Sockets befassen, wenn du Lust hast. Man lernt sicher einiges dazu.