Спасибо за ваш комментарий.

аюсь подключить древнюю сетевую камеру к своему компьютеру, и я застрял в очень фундаментальной проблеме - обнаружении конца потока.

Я используюTcpClient для связи с камерой, и я действительно вижу, как она передает данные команды, здесь никаких проблем.

        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);

Чтение ответа - вот где начинается проблема. Сначала я думал, что что-то простое, например, следующий фрагмент кода, сработает:

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

Но этого не произошло, поэтому на этот раз у меня была другая версия с использованием ReadByte (). Описание гласит:

Считывает байт из потока и продвигает позицию в потоке на один байт или возвращает -1, если находится в конце потока.

поэтому я подумал, что могу реализовать что-то вроде:

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

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

        }

Нет, все еще не работает. Я действительно вижу, как поступают данные, и после определенного момента (который не всегда совпадает, в противном случае я мог бы просто прочитать столько байтов каждый раз), я начинаю получать0 как значение для остальных элементов, и оно не останавливается, пока я не остановлю выполнение вручную. Вот как это выглядит:

Итак, мой вопрос: я что-то упустил здесь? Как я могу определить конец потока?

Большое спасибо,

ЧАС.

Ответы на вопрос(2)

Ваш ответ на вопрос