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.