如何在客户端 - 服务器方案中停止多个线程? C#

时间:2013-11-10 11:36:24

标签: c# multithreading

我试图在C#中创建一个聊天应用程序。作为经典的客户端 - 服务器模型,当服务器套接字接受新客户端时,将使用“客户端处理程序”角色启动新线程。我的问题是,当按钮点击关闭服务器时,是否有正确的方法来终止这些“客户端处理程序”线程?

提前致谢。

1 个答案:

答案 0 :(得分:0)

据我所知,正确的方法是在每个客户端套接字上调用socket.Shutdown(SocketShutdown.Send);。这将发送任何剩余数据并通知客户您正在关闭。客户端响应关闭其发送通道,使您收到0字节的消息。此时,您可以关闭套接字。

我几乎没有看到任何人使用Shutdown方法,也没有等待来自客户端的断开响应(0字节),可能是因为当其中一个客户端没有响应关闭时它会延迟关闭。

有关详细信息,请参阅Winsock FAQ - 不是.NET资源,但Socket类并不是那么远。