c++ - 更多 Poll() ?'s

标签 c++ windows linux sockets asynchronous

又回来了!

我一直在使用 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/

相关文章:

c++ - 指向多维 vector 的指针

c++ - 如何根据特定条件在 vector<struct> 中使用 count() 函数

c++ - 这个 C++ 功能的名称是什么?

java - Bash检测bash中的彩色文本输出

linux - 想要 grep 行中的特定单词并在文件中的该行下方添加一个新行

c++ - GLSL - 给定顶点法线计算表面法线

java - 从控制台运行与作为服务运行时 Java 服务包装器出现问题

c++ - 在VC++编译的应用程序中使用G++编译的DLL(插件)会出现什么问题?

c# - 如何检测可执行文件是否需要 UAC 提升(C# pref)

c - RFComm-客户端while循环在服务器被杀死时不会结束