gpt4 book ai didi

c# - 处理流时 C# 中的 NullReferenceException?

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:22 26 4
gpt4 key购买 nike

所以,我对所有这些网络编程都很陌生,我有几个问题...

我正在构建一个客户端-服务器聊天应用程序,其中服务器正在运行,客户端连接到服务器,然后当客户端向服务器发送消息时,服务器将其中继到所有的客户。服务器是控制台应用程序,客户端是 Windows 窗体应用程序。

我遇到的错误是在我的客户端中,在我的表单的最顶部,我有一个用于输入用户名的文本框和一个用于“提交”它并使用该用户名连接到服务器的按钮。

无论如何,这是我的按钮连接代码:

    private void btnConnect_Click(object sender, EventArgs e)
{
readData = "Connecting to chat server...";
msg();

try
{
sck_client.Connect("127.0.0.1", 8888);
sw = new StreamWriter(sck_client.GetStream());
string toSend = txtUsername.Text;

sw.Write(toSend);
sw.Flush();

chatThread = new Thread(GetMessages);
chatThread.Start();
}
catch (Exception ex)
{
readData = ex.ToString();
msg();
}
}

msg() 非常简单地获取 readData 中的值并将其打印到屏幕(在富文本框中)。 sw 是一个已在方法之外公开声明的流编写器,sck_client(一个 TcpClient)和 chatThread(一个线程)也是如此。

基本上,问题是,当我运行我的程序并尝试连接时,它会抛出异常 ex,就好像它无法连接一样。它抛出带有文本的 NullReferenceException:

System.NullReferenceException: Object reference not set to an instance of an object. at Chat_Client.Main.btnConnect_Click(Object sender, EventArgs e) in filepath\Chat_Client\Main.cs:line36

即使我的服务器正在运行并监听端口 8888 时也会发生这种情况。那么,我应该怎么做才能修复它?

如果您需要我的更多代码来解决问题,请在评论中告诉我,我会发布。

显示代码实例化的位置:

public partial class Main : Form // new class for the form itself
{
// all of these are declared outside any method:
TcpClient sck_client = default(TcpClient);
Thread chatThread = default(Thread);
string readData = null;
StreamWriter sw = default(StreamWriter);
StreamReader sr = default(StreamReader);
...

最佳答案

好的,这一行是你的问题:

TcpClient sck_client = default(TcpClient);

具体来说:

default(TcpClient);

default() 将返回给定类型的默认值。如果类型是引用类型(例如类),则它将返回 null。如果类型是值类型(例如 int),那么它将尝试将其设置为 0

default 关键字不会为您创建该类的新实例,您需要为此使用 new 关键字。

我会认真阅读这个:http://msdn.microsoft.com/en-us/library/fa0ab757.aspx

关于c# - 处理流时 C# 中的 NullReferenceException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7551641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com