C# Winsock是否限制并发连接的数量?

C# Winsock是否限制并发连接的数量?,c#,sockets,networking,client,C#,Sockets,Networking,Client,我最近在C stress tester中制作了一个程序,它创建了一个100000个套接字的数组,并将每个套接字连接到指定的服务器 每次我测试这个时,程序都会在16334个套接字处停止。最后连接的插座是插座16334。它们都保持连接,直到我关闭它们,但我仍然无法将超过16334个套接字连接到同一台服务器 为什么会这样?这是Winsock的限制吗 如果是这样的话,是否可以以某种方式绕过它?您可以建立的出站连接的数量是有限制的,并且确切地知道“停止在”的含义可能有助于确定您的问题。哪个API返回导致您

我最近在C stress tester中制作了一个程序,它创建了一个100000个套接字的数组,并将每个套接字连接到指定的服务器

每次我测试这个时,程序都会在16334个套接字处停止。最后连接的插座是插座16334。它们都保持连接,直到我关闭它们,但我仍然无法将超过16334个套接字连接到同一台服务器

为什么会这样?这是Winsock的限制吗


如果是这样的话,是否可以以某种方式绕过它?

您可以建立的出站连接的数量是有限制的,并且确切地知道“停止在”的含义可能有助于确定您的问题。哪个API返回导致您停止的错误代码

这些限制往往与临时端口的可用性以及可用内存和/或非分页池有关,尽管后者在Vista或更高版本上很少出现问题

您可能会在进程停止时尝试运行netstat,因为这将显示有多少其他进程也建立了连接,并且正在使用临时端口


您也可以看一看,因为根据您运行的操作系统,某些信息可能对您有用。

我确信某些地方存在内部限制。16334与16383 2^14-1..@Tinwor的关系令人怀疑。必须强调的是,将FD_SETSIZE定义为特定值不会影响Windows sockets服务提供商提供的实际套接字数量。此值仅影响select和WSAPoll函数使用的FD_XXX宏。-我看到的所有与此类文档相关的资源都有64或128这样的值,这与16334提供程序限制相差甚远?@Tinwor,你错了。它说可能的插槽数量取决于本地计算机上的内存量,但当我将所有16334个插槽连接到服务器时,CPU和内存甚至没有接近100%,因此肯定不是内存问题。此外,问题在于连接的数量,而不是套接字的数量。我受到16334个连接的限制,但我创建了100000个套接字,一点问题也没有。正如用户2864740所暗示的,您的连接可能已经用完了。您可以通过打开一个连接来打开更多的连接,同时从注册的端口范围中明确指定端口号,但您需要注意不要受到网络设备的阻碍或对希望使用这些端口的其他服务的干扰。另外,我不确定服务器是否可以处理…@elgonzo好的,谢谢,但是端口范围不是0到65535吗?如果是这样的话,我是否应该能够打开65536个连接,而不仅仅是16334个?