特定 Windows 套接字服务提供程序支持的最大套接字数特定于实现。 Microsoft Winsock 提供程序限制本地计算机上的可用内存支持的最大套接字数。 但是,第三方 Winsock 提供程序可能会对支持的套接字数量有限制。 应用程序不应假设特定数量的套接字的可用性。 有关本主题的详细信息,请参阅 WSAStartup。
FD_SET并选择
winsock2.h 头文件中 定义了许多 FD_XXX 宏,用于将应用程序从 UNIX 环境移植到 Windows。 这些宏与 选择 和 WSAPoll 函数一起使用,用于将应用程序移植到 Windows。 Windows 套接字应用程序可以使用的最大套接字数不受清单常量 FD_SETSIZE的影响。 在 Winsock2.h 头文件中定义的此值用于构造用于 选择 函数的 fd_set 结构。 Winsock2.h 中的默认值为 64。 如果应用程序设计为能够使用 选择 和 WSAPoll 函数处理超过 64 个套接字,则实现程序应在包括 Winsock2.h 头文件之前在每个源文件中定义清单 FD_SETSIZE。 执行此作的一种方法可能是在生成文件中的编译器选项中包含定义。 例如,可以将“-DFD_SETSIZE=128”作为编译器命令行的选项添加到Microsoft C++。 必须强调,将 FD_SETSIZE 定义为特定值不会影响 Windows 套接字服务提供商提供的实际套接字数。 此值仅影响 选择 和 WSAPoll 函数使用的 FD_XXX 宏。
相关主题