再回来!
我一直在使用windows上的select()进行异步套接字编程,并且它一直运行良好。然而,它只能扩展到1024个clients.Poll()是解决这个限制的方法,我知道它适用于linux和unix。但它不适用于Windows系统正确吗?
我读过WsaPoll(),它有完全相同的功能吗?我需要链接哪些库才能使用它?
我可以使用FD_SETSIZE在Windows中安全地增加套接字号吗?我的最终程序将在Linux服务器上。但是我现在正在测试Windows系统。我应该将我的测试机器交换到linux机箱吗? (可能无论如何都要去)
否则你会推荐什么用于Windows?
(抱歉所有的问题,我自己做研究,我保证= D)
答案 0 :(得分:3)
是WSAPoll()
的行为与poll()
相似。您需要使用WSAGetLastError
来找出问题所在。错误代码不匹配,根据WindowsSDK和您的系统版本,可能会或可能不会在winsock2标头中定义posix代码。
要使用WSAPoll
,您必须包含winsock2.h并链接到ws2_32.lib并在Windows Vista / Server 2008及更高版本上运行该应用程序。
但是,在代码中使用WSAPoll
并不总是阻止它在Windows XP上进行编译,而在启动应用程序时会出现错误。
如果您不打算在Windows上运行您的应用程序,那么我建议您跳过SDK,build,dll和Windows版本的痛苦,并设置一个Linux vm进行开发。
答案 1 :(得分:2)
libevent将在Windows,Linux,Solaris,OS X和所有BSD衍生产品上使用最佳可用的事件驱动编程机制。
答案 2 :(得分:1)
在Windows上,WSAAsyncSelect
应该允许您在单个线程中处理来自数千个套接字的事件。