C # - TcpClient - Detectando o fim do fluxo?

stou tentando conectar uma câmera de rede antiga ao meu computador e estou com um problema muito fundamental: detectar o fim do flux

Estou usandoTcpClient para me comunicar com a câmera e eu posso vê-la transmitindo os dados do comando, sem problemas aqu

        List<int> incoming = new List<int>();            
        TcpClient clientSocket = new TcpClient();
        clientSocket.Connect(txtHost.Text, Int32.Parse(txtPort.Text));
        NetworkStream serverStream = clientSocket.GetStream();
        serverStream.Flush();

        byte[] command = System.Text.Encoding.ASCII.GetBytes("i640*480M");
        serverStream.Write(command, 0, command.Length);

Lendo a resposta, é onde o problema começa. Inicialmente, pensei que algo simples como o seguinte código teria funcionado:

        while (serverStream.DataAvailable)
        {
            incoming.Add(serverStream.ReadByte());
        }

Mas isso não aconteceu, então eu tentei outra versão desta vez utilizando ReadByte (). A descrição indica:

Le um byte do fluxo e avança a posição dentro do fluxo em um byte, ou retorna -1 se no final do flux

então eu pensei que poderia implementar algo ao longo das linhas de:

        Boolean run = true;
        int rec;
        while (run)
        {
            rec = serverStream.ReadByte();

            if (rec == -1)
            {
                run = false;
                //b = (byte)'X';
            }
            else
            {
                incoming.Add(rec);
            }

        }

Não, ainda não funciona. Consigo ver dados entrando e depois de um certo ponto (que nem sempre é o mesmo; caso contrário, eu poderia simplesmente ler tantos bytes todas as vezes) começo a receber0 como o valor para o restante dos elementos e ele não pára até eu interromper manualmente a execução. Aqui está o que parece:

Então, minha pergunta é: estou perdendo algo fundamental aqui? Como posso detectar o final do fluxo?

Muito Obrigado

H.

questionAnswers(2)

yourAnswerToTheQuestion