Non so se può esserti di aiuto, io per inviare comandi e comunicare tra client e server utilizzo i componenti TidRExec e TidRExecServer.

- Client -
IdRexec.Host := IpAddress;
IdRexec.Port := Porta;
IdRexec.ConnectTimeout := TimeOut;
IdRexec.Connect;
Output := IdRexec.Execute(<InputCommand>);
IdRexec.Disconnect;


- Server -
procedure TFrmMenu.IdRexecServerCommand(AThread: TIdContext;
AStdError: TIdTCPClient; AUserName, APassword, ACommand: String);


if ACommand = <COMANDO> then begin
<Esegui comando>
IdRexecServer.SendResults(AThread,AStdError,<rispo sta>);
end;