我做了经第二应用TCP通信的应用程序,我得到一个错误:对象未设置C#
System.NullReferenceException: 'Object reference not set to an instance of an object.' --> s was null at the while loop.
只有当我强行关闭第二个应用程序(通过按下X出现此错误在应用程序的顶部或通过任务管理器将其杀死),这仍然与第一个连接。
我的那接收命令和打印出来的第一应用:
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!");
}
发送该命令我的第二应用:
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);
我试图检查如果s == NULL(如下面)和它仍然会引发异常。
while (!(s = reader.ReadLine()).Equals("PING") || (s==null))
的可能的复制[什么是一个NullReferenceException,如何解决呢?(https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-我的修复程序) – Filburt
您的streamreader取决于您的客户端对象,当第二个应用程序断开连接时它会被处置,只需添加一些错误处理即可。 – ConnorLSW
您在调用'Equals'方法 –