我可以在 windows 上使用 Asio(非增强)打开超过 2048 个套接字吗?
Can I open more than 2048 sockets using Asio(non-boost) on windows?
我正在尝试实际测试我的服务器程序,所以我使用 Asio(non-boost) 开发了一个简单的程序来模拟大量连接。我 运行 它在 Win7 上。
然而,根据 https://msdn.microsoft.com/en-us//library/kdfaxaay.aspx
, C 运行-time 库对任何一次可以打开的文件数有 512 个限制。试图打开超过最大数量的文件描述符或文件流会导致程序失败。使用 _setmaxstdio 更改此数字。 并且 _setmaxstdio
在给定超过 2048.
的参数时出错
这是否意味着我不能使用 Asio 在 windows 上打开超过 2048 个套接字?事实上,我尝试使用 async_connect
将超过 2048 个套接字(比如 4000 个)连接到服务器。我用 error_code = 0 成功连接了它们。我没有遇到任何程序故障。所以有人知道这里发生了什么吗?我真的在 windows 上打开了 4000 套接字吗?
你的线索在这里:
The C run-time libraries have a 512 limit for the number of files that can be open at any one time.
C Run-time 库 (CRT) 是为文件实现 C 标准函数的库 - fopen
等等。它不处理套接字,因为它们不是标准 c 的一部分。
对于套接字,您使用 Windows 套接字 (Winsock),这是一个不同的库。此限制不适用于它。
我正在尝试实际测试我的服务器程序,所以我使用 Asio(non-boost) 开发了一个简单的程序来模拟大量连接。我 运行 它在 Win7 上。
然而,根据 https://msdn.microsoft.com/en-us//library/kdfaxaay.aspx
, C 运行-time 库对任何一次可以打开的文件数有 512 个限制。试图打开超过最大数量的文件描述符或文件流会导致程序失败。使用 _setmaxstdio 更改此数字。 并且 _setmaxstdio
在给定超过 2048.
的参数时出错
这是否意味着我不能使用 Asio 在 windows 上打开超过 2048 个套接字?事实上,我尝试使用 async_connect
将超过 2048 个套接字(比如 4000 个)连接到服务器。我用 error_code = 0 成功连接了它们。我没有遇到任何程序故障。所以有人知道这里发生了什么吗?我真的在 windows 上打开了 4000 套接字吗?
你的线索在这里:
The C run-time libraries have a 512 limit for the number of files that can be open at any one time.
C Run-time 库 (CRT) 是为文件实现 C 标准函数的库 - fopen
等等。它不处理套接字,因为它们不是标准 c 的一部分。
对于套接字,您使用 Windows 套接字 (Winsock),这是一个不同的库。此限制不适用于它。