readUTF
doesn't just read bytes from a socket. It starts by reading the length of the string (as a 16-bit integer) and then reading the string. The problem is that what you send is not what is required for readUTF
to work successfully.
As Joachim Pileborg noted, you are also sending the entire 30 bytes of clientString
(including any remaining bytes that were not explicitly set). You should send it like this instead:
send(to_server_socket, clientString, strlen(clientString), 0);