J'ai fait une application qui communique via une deuxième TCP d'application et je reçois une erreur:référence d'objet non définie C#
System.NullReferenceException: 'Object reference not set to an instance of an object.' --> s was null at the while loop.
Cette erreur ne se produit que lorsque je ferme avec force la seconde application (en appuyant sur X en haut de l'application ou le tuer via le gestionnaire de tâches) qui est toujours connecté avec le premier.
Ma première application qui reçoit les commandes et les imprime:
try
{
StreamReader reader = new StreamReader(client.GetStream());
StreamWriter writer = new StreamWriter(client.GetStream());
string s = String.Empty;
while (!(s = reader.ReadLine()).Equals("PING"))
Console.WriteLine(s);
reader.Close();
writer.Close();
client.Close();
}
catch (IOException)
{
Console.WriteLine("woops an error!");
}
Ma deuxième application qui envoie les commandes:
try
{
TcpClient client = new TcpClient("192.168.0.107", 8080);
StreamReader reader = new StreamReader(client.GetStream());
StreamWriter writer = new StreamWriter(client.GetStream());
writer.WriteLine("PING");
writer.Flush();
reader.Close();
writer.Close();
client.Close();
}catch(Exception ex)
Console.WriteLine(ex.Message);
J'ai essayé de vérifier si de la == null (comme ci-dessous) et il jette encore une exception.
while (!(s = reader.ReadLine()).Equals("PING") || (s==null))
double possible de [Qu'est-ce qu'un NullReferenceException, et comment puis-je résoudre ce problème?] (https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and- how-do-i-fix-it) – Filburt
votre lecteur de flux dépend de votre objet client, qui est éliminé lorsque la seconde application se déconnecte, ajoutez simplement un traitement d'erreur. – ConnorLSW
Votre deuxième vérification 's == null' exécuté après que vous appelez la méthode' Equals' –