Socket::Receive() is a blocking function if there is no more data, so something like this will let you send reply back to client:
while(Socket.Receive(Buffer, sizeof(Buffer), Size) == Socket::Done)
{
ReceivedStr.append(Buffer, Buffer + Size);
// Break out if received less data than buffer can hold
if (Size < sizeof(Buffer))
break;
}