J'ai deux logiciels, l'un étant un serveur et l'autre étant l'interface client.L'écriture NetworkStream ne se termine pas si le thread n'est pas dormi
Dans mon serveur, je prends et demande la manipulation puis retourner une chaîne par une méthode que j'ai écrit « réponse »
public static void reply(string buffer, NetworkStream stream)
{
stream.Write(Encoding.ASCII.GetBytes(buffer), 0, buffer.Length);
}
la question que j'ai est que par exemple, si je devais faire le code ci-dessous
for(int i = 0; i<5; i++){
reply("SOME REPLY", stream);
}
le code ci-dessus écrire des lignes newlined aléatoires au client comme ceci:
SOME REPLY
SOME REPLYSOME REPLY
SOME REPLY
SOME REPLYSOME REPLYSOME REPLY
SOME REPLYSOME REPLY
SOME REPLY
SOME REPLY
Si je devais mettre un appel Thread.Sleep 200ms dans le forloop, il aurait correctement souligné les réponses. Du côté client le code ci-dessous comment nous lisons à partir du serveur et de l'impression à la console:
Byte[] bytes = new Byte[256];
NetworkStream stream = endpoint.GetStream();
int i;
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
{
Console.WriteLine(System.Text.Encoding.ASCII.GetString(bytes, 0, i));
}
C'est ici qu'utiliser un ['BinaryWriter'] (http://msdn.microsoft.com/fr-fr/library/yzxa6408 (v = vs.110) .aspx) peut être utile. Il fait l'écriture des octets de longueur principaux pour vous. –
Merci, j'ai effectivement essayé de faire "\ n" sans succès mais je ne crois pas que je suis passé à l'utilisation de "writ" sur "writeline". Votre fixe a bien fonctionné. – user2887749
Si vous êtes sur Windows, \ n vous aurez besoin de \ n \ n - en particulier dans .NET - Voir la propriété Environment.NewLine. – t0yk4t