再来一次!
我已经在windows上用select()进行了一些异步套接字编程,并且运行得很好。然而,它只能扩展到1024,clients.Poll()是绕过这一限制的方法,我知道它在linux和unix上都能工作。但是它不能在windows系统上工作,对吗?
我读到过WsaPoll(),它有没有完全相同的功能?我必须链接到哪些库才能使用它?
我能用FD_SETSIZE在windows中安全地增加插座数吗?我的最终程序将运行在linux服务器上。然而,我现在正在windows系统上进行测试。我应该把我的测试机器换成linux机器吗?(可能无论如何都会这样做)
否则,你会推荐在windows上使用什么?
(对于所有的问题,我很抱歉,我正在自己做研究,我保证=D)
发布于 2011-03-19 08:27:06
是的,WSAPoll()的行为类似于poll()。您将需要使用WSAGetLastError来找出错误所在。错误代码不匹配,根据WindowsSDK和您的系统版本,POSIX码可能定义在winsock2头中,也可能不定义。
要使用WSAPoll,您必须包含winsock2.h和指向ws2_32.lib的链接,并在Windows Vista/Server2008及更高版本上运行该应用程序。
但是,在代码中包含WSAPoll并不总是会阻止它在Windows XP上编译,相反,在启动应用程序时会出现错误。
如果您不打算在Windows上运行您的应用程序,那么我建议您跳过SDK、build、dll和Windows版本的痛苦,设置一个Linux vm来进行开发。
发布于 2011-03-19 10:07:59
libevent将在Windows、Linux、Solaris、OS和所有BSD衍生产品上使用最佳可用的事件驱动编程机制。
发布于 2011-03-19 08:31:06
在Windows上,WSAAsyncSelect应该允许您在单个线程中处理来自数千个套接字的事件。
https://stackoverflow.com/questions/5358907
复制相似问题