Jeder Listeneintrag hat einen "Titel" (den du in der Listbox siehst) und einen Pointer auf ein optionales Objekt.
Wenn Du den Listeneintrag so erzeugst
Listbox1.AddItem(Socket.RemoteAddress,Socket);
, dann ist der Titel des Eintrags die
IP Adresse des verbundenen Clients und das "optionale Objekt" die
Socket Connection zwischen Server und diesem einen Client (vergleichbar mit einer eindeutigen "
TCP Session").
Da der "Data" Pointer des Listboxeintrags auf jedes beliebige Objekt zeigen kann, musst Du es mit dem richtigen Typen ansprechen (casten).
Das bedeutet dieser Codeteil:
(Listbox1.Items.Objects[i] as TCustomWinSocket)
oder alternativ
TCustomWinSocket(Listbox1.Items.Objects[i])
Mit diesem Befehl sendest Du den Text "Test" über die eindeutige Socket Verbindung "i" an den ausgewählten Client "y".
(Listbox1.Items.Objects[i] as TCustomWinSocket).SendText('Test');