Je ne suis pas habitué à C# (je fais en général C++) et j'essaie de déboguer une application qui n'est pas à moi du tout.Pourquoi la lecture de mon flux d'entrées tcp entraîne-t-elle le remplissage d'un tableau d'octets avec un caractère nul uniquement?
Mon application essaie de lire une grande ligne à partir d'un socket TCP. Disons environ 140 000 caractères. Et ça échoue. Laissez-moi vous expliquer comment.
Mon code est ici (dans une boucle en fait)
System.IO.Stream inputStream;
//...
// Loop code:
buffer = new byte[2];
readByteForLength = inputStream.Read(buffer, 0, 2);
Il se trouve que Read() peut remplir le tableau tampon correctement jusqu'à un certain point, où il remplit de caractères NULL au lieu de validité valeurs. Et il renvoie 2 comme il le ferait dans un cas correct.
Avez-vous une idée pourquoi de tels caractères NULL?
Le pacquet tcp est-il toujours sur le réseau lorsque j'essaie de lire plus de mes données? Existe-t-il une limite pour inputStream avant qu'il se comporte mal?
Mise à jour: Par ailleurs le faire aboutir au même genre de question:
System.IO.StreamReader sr = new StreamReader(inputStream);
string s = sr.ReadToEnd();
File.WriteAllText(@"c:\temp\toto.txt", s);
En fait, le fichier toto arrête exactement où je rencontre un problème dans la première version de mon code alors qu'il est un peu plus longtemps car le reste de la ligne est alors rempli avec des caractères NULL, presque jusqu'à 400 000!
Si l'application ne vous appartient pas, pourquoi écrivez-vous 'Mon application' ;-) –