又回来了!
我一直在使用 select() 在 Windows 上进行一些异步套接字编程,并且运行良好。然而,它最多只能扩展到 1024 个客户端。Poll() 是解决该限制的方法,而且我知道它适用于 linux 和 unix。但它不适用于 Windows 系统,对吗?
我读到了 WsaPoll(),它是否具有完全相同的功能?我必须链接到哪些库才能使用它?
我可以使用 FD_SETSIZE 在 Windows 中安全地增加套接字数量吗?我的最终程序将在 linux 服务器上。但是我现在正在 Windows 系统上进行测试。我应该把我的测试机器换成 linux 机器吗? (可能无论如何都会去)
否则,您会推荐在 Windows 上使用什么?
(抱歉所有问题,我正在自己做研究,我保证 =D)
最佳答案
是的 WSAPoll()
表现得像 poll()
。您将需要使用 WSAGetLastError
来找出问题所在。错误代码不匹配,并且根据 WindowsSDK 和您的系统版本,posix 代码可能会或可能不会在 winsock2 header 中定义。
要使用 WSAPoll
,您必须包含 winsock2.h 和 ws2_32.lib 的链接,并在 Windows Vista/Server 2008 及更高版本上运行该应用程序。
但是,在您的代码中包含 WSAPoll
并不总是会阻止它在 Windows XP 上进行编译,而是会在您启动应用程序时遇到错误。
如果您不打算在 Windows 上运行您的应用程序,那么我建议您跳过 SDK、构建、dll 和 Windows 版本问题,并设置一个 Linux 虚拟机进行开发。
关于c++ - 更多 Poll() ?'s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5358907/