【发布时间】:2017-04-12 08:48:35
【问题描述】:
C# 中的网络是我相对较新的东西,所以我想知道如何在特定项目中开始使用它。
最终,我想开发一个服务器,它可以同时连接多达一千个客户端(TCP 协议)。
我知道为每个客户端创建一个新线程可能会非常低效,尤其是当每个线程的内存开销通过 100 个客户端时。
这么简单,我要问的是,任何人都可以在任何地方建议我可以找到更多关于开始为许多客户端开发“多线程”服务器的信息。
(如果这个问题太宽泛,请添加评论。)
【问题讨论】:
-
本质上它不仅仅是一个 C# (.NET) API 问题。请参阅smallvoid.com/article/winnt-tcpip-max-limit.html 了解可能会破坏您的计划的方面的一个很好的总结,尽管有点陈旧。此外,鉴于在 Windows 中许多系统资源或多或少明显属于本机类型
HANDLE(它们是可等待的),您可以轻松地使用线程池来管理多个连接。每个连接 1 个线程的方法不是您唯一的选择。此外,您可能想查看completion port的用途,因为这会给您提供新的想法来做您想做的事情。
标签: c# multithreading sockets clients