Simplement j'ai essayé d'implémenter ce que BufferedStreamReader
fait en Java. J'ai un flux de socket ouvert et je veux juste le lire de façon linéaire - ligne par ligne.C# - StreamReader.ReadLine ne fonctionne pas correctement!
J'ai le code serveur suivant.
while (continueProcess)
{
try
{
StreamReader reader = new StreamReader(Socket.GetStream(), Encoding.UTF8);
string command = reader.ReadLine();
if (command == null)
break;
OnClientExecute(command);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
Et le client-code suivant:
TcpClient tcpClient = new TcpClient();
try
{
tcpClient.Connect("localhost", serverPort);
StreamWriter writer = new StreamWriter(tcpClient.GetStream(), Encoding.UTF8);
writer.AutoFlush = true;
writer.WriteLine("login>user,pass");
writer.WriteLine("print>param1,param2,param3");
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
tcpClient.Close();
}
Le serveur ne lit que la première ligne (login>user,pass
) puis ReadLine
retourne NULL!
Quelle est la manière la plus simple de réaliser ce lecteur orienté ligne comme dans Java BufferedStreamReader
? : s
S'il vous plaît, jetez vos objets ici (StreamReader et StreamWriter). Sinon, vous risquez d'avoir des problèmes inattendus. Il suffit de mettre un bloc d'utilisation autour d'eux (comme en utilisant (écrivain StreamWriter = ...) {}), et vous serez ok – configurator
Pas que c'était pertinent à la question - juste une suggestion. – configurator
génial;) grâce – Aleyna