It reminds me of something I have seen several times before. When you get the string out of the array of bytes, the trailing binary zeroes make it to that string, acting as a imbedded end-of string. When you them append to that string, this end-of-string is still there, so that the appended one is not visible.
Try to do the GetString on a subarray of only bytesRecieved characters.
Not sure this will help, but it's worth trying.
Libor