ich geh mal davon aus das du dich über den leeren string wunderst?? wenn du mal sizeof(String) aufrufst wirst du sehen das die größe immer gleich ist egal wieviel zeischen du in dem string hast. Liegt daran das string eigentlich auch nur ein pointer ist der irgendwo hinn im speicher zeigt..
Imho versendest du nur die Speicheradresse... Du solltest demnach deinen string direkt in den buffer schreiben den du sendest oder anstelle von string array of char etc. verwenden