Hmm
The reason actually seems to be that you read different data than you send...
When you are sending packet let's say you send a string "hello". Which is 5 letters, so sent data will contain only those 5 letters.
But, when you are reading the data with sf::Packet the data is expected to be "\5hello".
When sf::Packet tries to read a string, the first item it reads is the length of the string. Which is number 5 in this case, then it proceeds to read 5 letters, if packet is long enough.
In your case, you sent data "hello", so the length of the string will be 104 (ascii value for letter 'h'). Since the packet doesn't contain enough data the reading will fail and string will be empty.
In short, use sf::Packet for sending if you are reading with sf::Packet, something like:
sf::Packet packet;
packet << data;
if (socket.Send(packet) != sf::Socket::Done)
... etc