Bucanero.
Gracias por contestar.
El tema es que lo que planteas básicamente es también esperar (más o menos tiempo) a que se active el ClientSocket y no se activa.
He estado mirando por internet y he visto que hay dos formas de tratar este componente, una con el parámetro "ctBlocking" y otra con el parámetro "ctNonBlocking". La verdad es que no sé muy bien la diferencia que hay entre una forma y otra pero si parece que los eventos los disparan de distinta manera. Por defecto viene "ctNonblocking", si lo cambio a "ctBlocking" si me activa al tirón pero tiene la contrapartida de que no se activa el evento "OnRead" por lo que hay que consultar el resultado manualmente cuando se envía cualquier cosa.
P.e.:
Código Delphi
[-]
ClientSocket1.ClientType := ctBlocking;
ClientSocket1.Open;
ClientSocket1.Socket.SendText('#I#');
Raw:='';
while Raw='' do begin
Raw:=ClientSocket1.Socket.ReceiveText;
end;
ShowMessage(Raw);
Yo creo que con esto me apaño.
Gracias a todos.