我目前正在使用TcpListener来处理传入的连接,每个连接都会分配一个线程来处理通信,然后关闭该连接。代码如下:
TcpListener listener = new TcpListener(IPAddress.Any, Port);
System.Console.WriteLine("Server Initialized, listening for incoming connections");
listener.Start();
while (listen)
{
// Step 0: Client connection
TcpClient client = listener.AcceptTcpClient();
Thread clientThread = new Thread(new ParameterizedThreadStart(HandleConnection));
clientThread.Start(client.GetStream());
client.Close();
}
listen
变量是该类的一个字段,它的值为布尔类型。当程序关闭时,我希望它停止监听客户端。将listen
设置为false
可以防止它继续接受新的连接,但由于AcceptTcpClient
是一个阻塞调用,它至少会接受下一个客户端并然后退出。有没有办法强制它立即中断并停止?在其他阻塞调用运行时调用listener.Stop()
会产生什么影响?
IDisposable
接口。这个答案有几个错误点,不应该被接受。 - xxbbcc