select()
可以处理64个套接字,我可以通过在编译时覆盖FD_SETSIZE
常量来更改此限制。但是FD_SETSIZE
可以采取的最大数量是多少?
我是否应该在Windows下使用select()
,还是应该使用WSAEventSelect()
? (不确定WSAEventSelect()
是否允许超过64个套接字)。
答案 0 :(得分:4)
MSDN没有具体说明FD_SETSIZE
的上限。但是有很多因素会影响实际限制。
并发连接限制(系统级),一般工作站大约1000~4000。
性能。 Windows的select()
实施得非常糟糕,您应该考虑使用WSAAsyncSelect()
和完成端口超过一千个套接字。
答案 1 :(得分:0)
最大套接字数取决于底层的WinSock服务提供程序(WinSock本身只是接口包装器)。请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/ms739169(v=vs.85).aspx
WSAEventSelect()在select()上有一些额外的功能,但FD_SETSIZE由两个函数处理相同。