Oculus Quest Receive big data from TcpClient

So I have developed a C# app that runs on PC as a server, it captures the desktop of the PC and sends it as an image to either another PC or in this case an Oculus Quest.

When streaming to another PC it works fine. But when trying to stream to the Quest the buffer gets divided in so many parts that I cant get hold of a complete image. The image is basically 240 Kb size, you can see is not a small one (its a HD monitor).

The Server side (the PC) sends data like these:

 AppendTextBox("Waiting for a client..." + Environment.NewLine);
        theOtherClient = meAsServer.AcceptTcpClient();
        AppendTextBox("Connected with " + theOtherClient.Client.RemoteEndPoint.ToString() + Environment.NewLine);

        try {
            NetworkStream srns = theOtherClient.GetStream();
            while (currentProtocol == Protocol.Server) {
                using (Image bmp = CaptureScreen.GetDesktopImage()) {
                    using (MemoryStream ms = new MemoryStream()) {
                        bmp.Save(ms, ImageFormat.Jpeg);
                        byte[] data = ms.ToArray();
                        byte[] dataLen = BitConverter.GetBytes(data.Length);
                        srns.Write(dataLen, 0, dataLen.Length);
                        srns.Write(data, 0, data.Length);
                        AppendTextBox("Image sent in -> " + data.Length.ToString() + " total bytes..." + Environment.NewLine);
                    }
                }

                Thread.Sleep(serverDelay);  // Pause between images...
            }
            AppendTextBox("Closing server...");
            theOtherClient.Close();
            meAsServer.Stop();
        } catch (Exception e) {
            AppendTextBox("Exception: " + e.ToString() + Environment.NewLine);
            theOtherClient.Close();
            meAsServer.Stop();
        }

And the Client (the Quest) tries to receive data like these:

meAsClient.Connect(myIP, myPort);

    NetworkStream clns = meAsClient.GetStream();

    byte[] imgInfo = new byte[8];
    List<byte> imgData = new List<byte>();
    meAsClient.ReceiveBufferSize = 65536; 

    while (currentProtocol == Protocol.Client) {

        try {

            if (meAsClient.Available > 0) {

                int dataAmount = clns.Read(imgInfo, 0, meAsClient.Available);
                int dataSize = BitConverter.ToInt32(imgInfo, 0);
                MyDebugWindow.globalMyDebugUpdate("Image Size -> " + dataSize.ToString() + Environment.NewLine);

                imgData.Clear();
                do {
                    byte[] imgBuffer = new byte[meAsClient.Available];
                    dataAmount = clns.Read(imgBuffer, 0, meAsClient.Available);
                    imgData.AddRange(imgBuffer);
                } while (meAsClient.Available > 0);
                MyDebugWindow.globalMyDebugUpdate("Total Data -> " + imgData.Count.ToString() + Environment.NewLine);
                imgData.CopyTo(theImgData);

            }

        } catch (Exception e) {
            MyDebugWindow.globalMyDebugUpdate("Exception: " + e.ToString() + Environment.NewLine);
        }

    }

    meAsClient.Close();

Both, client and server are running in separate threads. And they are both connected in a local network.

Any feedback, ideas, comments or upgrades to these code or method are truly welcome!