This is expected behaviour for a streaming service like TCP.
TCP cannot transfer any message longer than one byte.
If you want to transfer any structure longer than one byte, you need a protocol on top of TCP - maybe put a null or something at the end of your strings and send that as well. At the receiving end, concatenate all received bytes until you find a null.