0

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

提前致谢。

4

1 回答 1

0

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

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

有关更多信息,请参阅Winsock 常见问题解答- 不是 .NET 资源,但Socket该类并不遥远。

于 2013-11-10T13:01:27.963 回答