如何正常关闭TcpListener / TcpClient连接?

时间:2014-11-08 22:05:41

标签: c# multithreading tcp thread-safety tcplistener

我有一个场景,其中我有一个TcpListener可以接受多个TcpClient;接受后,他们用NetworkStream以全双工模式交换数据,因为在MS doc中定义:

  

可以在NetworkStream类的实例上同时执行读写操作,而无需同步。只要有一个用于写操作的唯一线程和一个用于读操作的唯一线程,读写线程之间就不会存在交叉干扰,也不需要同步。

所以,如果我像this question中建议的那样编写一个acceptTcpListener的多线程实现:

while (listening)
{
    TcpClient client = listener.AcceptTcpClient();
    // Start a thread to handle this client...
    new Thread(() => HandleClient(client)).Start();
}

我怎么能优雅地停止一个连接?我是否有可能“控制”我创建的这些线程? 我为每个线程执行“HandleClient”一个线程来读取NetworkStream并且ondemand一个线程通过NetworkStream写入。

0 个答案:

没有答案