Lorsque j'utilise uniquement \r
comme terminaison de ligne, la méthode StreamReader.ReadLine()
ne fonctionne pas. Cela fonctionne si j'utilise Environment.NewLine
, \r\n
ou \ra
("a" étant n'importe quel caractère). Est-ce un bug? Le même problème ne se produit pas lors de l'utilisation de MemoryStream au lieu de NetworkStream. Quelles solutions de contournement puis-je utiliser si je ne peux pas modifier le protocole?StreamReader.ReadLine ne fonctionne pas sur TCP lors de l'utilisation de r comme terminaison de ligne
Mon service
Thread service = new Thread((ThreadStart)delegate
{
TcpListener listener = new TcpListener(IPAddress.Loopback, 2051);
listener.Start();
using (TcpClient client = listener.AcceptTcpClient())
using (NetworkStream stream = client.GetStream())
using (StreamReader reader = new StreamReader(stream))
using (StreamWriter writer = new StreamWriter(stream))
{
writer.AutoFlush = true;
string inputLine = reader.ReadLine(); // doesn't work - freezes here
writer.Write("something\r");
}
});
service.Start();
Mon client
using (TcpClient client = new TcpClient("localhost", 2051))
using (NetworkStream stream = client.GetStream())
using (StreamWriter writer = new StreamWriter(stream))
using (StreamReader reader = new StreamReader(stream))
{
writer.AutoFlush = true;
writer.Write("something else\r");
var message = reader.ReadLine(); // doesn't work even
// if I remove the freezing point above
}
double possible (http://stackoverflow.com/questions/1099953/streamreader-readline-and-cr) [StreamReader.ReadLine et CR] –