我正在设计一个新服务器,需要支持数千个 UDP 连接(大约 100,000 个会话)。有人可以解释一下
select
vs poll
vs epoll
吗?它会帮助我知道该使用哪一个。
如果您使用 Linux,答案是 epoll;如果您使用 FreeBSD 或 Mac OS X,答案是 kqueue;如果您使用 Windows,答案是 i/o 完成端口。
您(几乎肯定)想要研究的一些其他内容是:
此外,重要的是要注意,与 TCP 不同,UDP 没有“连接”。由于调试基于网络的解决方案可能具有挑战性,因此从小规模开始并扩大规模也符合您的最大利益。
Linux:
epoll
FreeBSD:kqueue
窗户:??
有一些包装库,例如 libevent 和 libev,可以为您抽象这一点。