更多民意调查()?

时间:2011-03-18 23:47:22

标签: c++ windows linux sockets asynchronous

再回来!

我一直在使用windows上的select()进行异步套接字编程,并且它一直运行良好。然而,它只能扩展到1024个clients.Poll()是解决这个限制的方法,我知道它适用于linux和unix。但它不适用于Windows系统正确吗?

我读过WsaPoll(),它有完全相同的功能吗?我需要链接哪些库才能使用它?

我可以使用FD_SETSIZE在Windows中安全地增加套接字号吗?我的最终程序将在Linux服务器上。但是我现在正在测试Windows系统。我应该将我的测试机器交换到linux机箱吗? (可能无论如何都要去)

否则你会推荐什么用于Windows?

(抱歉所有的问题,我自己做研究,我保证= D)

3 个答案:

答案 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应该允许您在单个线程中处理来自数千个套接字的事件。