2011-03-18 83 views
1

回来了!更多投票()?的

我一直在做一些异步套接字编程与选择()在Windows上,它一直工作得很好。然而它只能扩展到1024个clients.Poll()是解决这个限制的方法,我知道它可以在linux和unix上运行。但它不适用于Windows系统是否正确?

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

可以使用FD_SETSIZE在Windows中安全地增加套接字号吗?我的最终程序将在Linux服务器上。不过,我现在正在Windows系统上进行测试。我应该将我的测试机器交换到Linux机器吗? (可能要反正)

否则你会推荐使用Windows?

(对不起,所有的问题,我对我自己做研究,我答应= d)

+1

请勿使用ASIO。可读代码更好。 – 2011-03-19 02:14:33

回答

3

WSAPoll()行为就像poll()。你将需要使用WSAGetLastError找出哪里出了问题。错误代码不匹配,根据WindowsSDK和系统版本的不同,posix代码可能会或可能不会在winsock2头文件中定义。

要使用WSAPoll,您必须包含winsock2.h和链接到ws2_32.lib并在Windows Vista/Server 2008及更高版本上运行应用程序。

但是,在您的代码中有WSAPoll并不总是阻止它在Windows XP上编译,而是在启动应用程序时发生错误。

如果您不打算在Windows上运行您的应用程序,那么我建议您跳过SDK,build,dll和Windows版本的问题,并设置一个Linux vm来开发。

+1

好的,这就是我的想法,谢谢你的确认。我将只安装一个Linux发行版,我需要一段时间。 – ultifinitus 2011-03-19 00:50:25

1

在Windows上,WSAAsyncSelect应该允许您在单个线程中处理来自数千个套接字的事件。

+0

谢谢!我不确定它的可扩展性如何! – ultifinitus 2011-03-19 00:50:45

2

libevent将使用Windows,Linux,Solaris,OS X和所有BSD衍生产品上事件驱动编程的最佳可用机制。