Wo wird denn fSocketConnected gesetzt? Und wie? In einem Event?
Ändert das hier vielleicht was (falls TClientSocket eine Eigenschaft Connected hat...)?
Code:
fSocket := TClientSocket.Create(nil);
fSocket.ClientType := ctNonBlocking;
fSocket.OnConnected := SocketConnected;
fSocket.OnRead := ReadDataFromSocket;
...
repeat until fSocket.Connected;