【发布时间】:2011-07-10 18:34:38
【问题描述】:
我有一个服务器和一个客户端应用程序,下面是它当前的实现方式:服务器有一个循环,在它自己的线程中,它通过 TcpListener 监听新连接。如果有人连接,它会将 TcpClient 传递给一个循环,该循环专门监听该 TcpClient,并通过 NetworkStream 处理与该用户的所有交互。
在客户端,我有一个连接到服务器的 TcpClient。我的理解是我需要将它分支到不同的线程,因为任何 IO 都会将其置于阻塞模式,我不能让它停止主线程。
到目前为止,我理解正确吗?有没有更简单的方法来确保异步通信而无需停止任一程序的主线程?
无论哪种方式,对于我的主要问题:如何确保所有这些线程和套接字都得到正确处理?如果程序在仍处于阻塞模式时退出,它似乎会冻结。那么如何中止套接字上的所有 IO 并告诉子线程中的无限循环我们已经完成了?
顺便说一句,这也是一个 Unity3d 项目,以防万一发生任何变化。
【问题讨论】:
标签: c# multithreading networking unity3d