【发布时间】:2010-09-26 19:03:15
【问题描述】:
我目前正在使用 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 变量是一个布尔值,它是类中的一个字段。现在,当程序关闭时,我希望它停止监听客户端。设置监听false 将阻止它接受更多连接,但由于AcceptTcpClient 是一个阻塞调用,它至少会占用下一个客户端然后退出。有什么办法可以迫使它在当时和那里简单地爆发并停止?在另一个阻塞调用运行时调用 listener.Stop() 有什么影响?
【问题讨论】:
标签: c# sockets networking tcplistener