我只是在编写一个聊天应用程序(服务器),但我遇到了问题。
服务器接受连接,TcpClient然后创建Connection类的新实例并将TcpClient' 引用传递给它。这个新Connection实例保存了参考以供将来使用。然后将新Connection实例添加到Users列表中。
让我们看看伪代码:
while(true)
{
// 1. Accept connection into new Client instance
Client = new TcpClient()
Client = AcceptTcpClient();
// 2. Create new Connection object and pass Client's reference to it.
Connection abc = new Connection(Client);
// Add new user to users collection
Users.Add(Connection);
}
现在该abc实例引用了 Client 对象。直到这里一切正常,但每次 while() 循环进入下一次迭代时,我都可以在调试器中看到 Client 实例已被处理(我想是由垃圾收集器处理的)。
因此,当另一个迭代开始时,列表中的所有Connection实例Users都可以,但它们对引用的TcpClient引用只是回收的实例。因此连接立即关闭,无法进行任何工作。
你知道问题出在哪里吗?感谢您的回答。
您可能需要确切的源代码 - 如果需要,我当然可以提供。