Ich erstelle gerade einen Client, der mit einem Server kommuniziert. Bis jetzt war jede Kommunikation nicht länger als eine Zeile, so dass ich Streamreader readline benutzen konnte, um die Kundeneingaben zu erhalten. Allerdings habe ich jetzt Befehle, die mehrere Zeilen Code sind, aber der Server liest nur in der ersten Zeile, wie ich readline() verwendet habe. Ich habe readtoend() versucht, aber wenn ich dies tue, schlägt die Verbindung zwischen dem Server und dem Client aus irgendeinem Grund fehl.C# Server liest nicht mehrere vom Client gesendete Zeilen
Im Folgenden ist der Code in meinem Client, ein Beispiel, das einen Befehl zeigt, die aus mehreren Zeilen bestehen gesendet werden:
else if (args.Length == 1)
{
sw.WriteLine("GET" + " /?name=" + args[0] + " HTTP/1.1");
sw.WriteLine("HOST: " + host);
sw.WriteLine("");
sw.Flush();
}
Und hier ist das in meinem Server-Code, der in der Zeile lautet:
string line = sr.ReadToEnd().Trim();
Console.WriteLine("Respond Recieved " + line);
String[] Sections = line.Split(new char[] { ' ' }, 2);
Also, das Problem zu klären, wenn ich den Befehl gesendet, wie oben auf den Server gezeigt, die Antwort vom Server wäre „Antwort erhalten: GET“ + „/? name =“ + args [0 ] + "HTTP/1.1" und nicht die anderen Zeilen.
Jede Hilfe würde sehr geschätzt werden!
Danke
Lucy
Nun schließt alle Daten lesen alles ist? Wenn nicht, wann erwarten Sie, dass 'ReadToEnd' zurückkehrt? –
Woher wird Ihr readtoend aufgerufen? Woher weiß es, wann es schießt? – BugFinder
Sie scheinen auch einen HTTP-Client zu schreiben, können Sie stattdessen nicht den eingebauten 'HttpClient' verwenden? – DavidG