Semplicemente ho cercato di implementare ciò che BufferedStreamReader
fa in Java. Ho un flusso di socket aperto e voglio solo leggerlo in modo orientato alla linea - riga per riga.C# - StreamReader.ReadLine non funziona correttamente!
Ho il seguente codice server.
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());
}
}
E il seguente client-code:
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();
}
Il server legge solo la prima riga (login>user,pass
) e poi ReadLine
restituisce null!
Qual è il modo più semplice per ottenere questo lettore orientato alla linea come in Java BufferedStreamReader
? : s
prega, smaltire gli oggetti qui (lo StreamReader e StreamWriter). Altrimenti potresti avere problemi imprevisti. Basta mettere un blocco usando intorno a loro (come in uso (StreamWriter writer = ...) {}), e starai bene – configurator
Non che fosse pertinente alla domanda - solo un suggerimento. – configurator
ottimo;) grazie – Aleyna