Hi,
yes, that is normal. In fact there is no way for hardware to know when your message ends (except you do not use something like EOF). So there are 2 ways:
1. You have to know your message length (if the lengthis fixed).
2. You should send length in first 2 bytes if the length is not fixed.
3. Use EOF (for example CRLF) to indicate end of message.
It is good to allocate internal buffer (string type is enough if you send strings, otherwise bytes array is good idea also). And copy received data into this buffer until you get your EOF or until length reached. The process your message and clear the internal buffer.