C # - StreamReader.ReadLine nie działa poprawnie!
Po prostu próbowałem wdrożyć coBufferedStreamReader
robi w Javie. Otwieram strumień gniazd i chcę go przeczytać w sposób zorientowany liniowo - linia po linii.
Mam następujący kod serwera.
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());
}
}
I następujący kod klienta:
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();
}
Serwer odczytuje tylko pierwszą linię (login>user,pass
) i wtedyReadLine
zwraca wartość null!
Jaki jest najłatwiejszy sposób na osiągnięcie tego czytnika zorientowanego liniowo, jak w języku JavaBufferedStreamReader
? : s