C# 压力测试.NET程序在Windows 10上引发异常

C# 压力测试.NET程序在Windows 10上引发异常,c#,.net,sockets,windows-10,ddos,C#,.net,Sockets,Windows 10,Ddos,我从我写的一个压力测试程序中得到了这个方法: void UdpStress(IPEndPoint destination) { byte[] data = new byte[] { 255 }; Socket s = new Socket(System.Net.Sockets.AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); while (true) s.SendTo(d

我从我写的一个压力测试程序中得到了这个方法:

void UdpStress(IPEndPoint destination)
{
    byte[] data = new byte[] { 255 };
    Socket s = new Socket(System.Net.Sockets.AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
     while (true) 
         s.SendTo(data, destination); 
}
运行此方法后,我在不到1秒的时间内出现以下异常:

System.Net.Sockets.SocketException:无法执行套接字上的操作,因为系统缺少足够的缓冲区空间或队列已满

我在Windows8上运行了它,它运行得很好

大约两周前我升级到了Windows10,现在它不工作了。我怀疑这与Windows10中修改的套接字API或其他东西有关

那么,这个错误是从哪里来的呢?为什么现在在Windows10中会发生这种情况,而在Windows8中却根本没有发生


编辑:另一个问题的答案不能解决我的问题。他们建议像端口耗尽这样的事情,这可能是可能的,但在我升级到Windows10之前从未发生过。这个程序在Windows8上运行得非常好,但是现在,出于我难以理解的原因,由于这个例外,它在Windows10上无法运行。此外,有一个答案说它在Vista上有效,但在7上不起作用,这表明操作系统之间存在一些不同之处,限制了压力测试程序。这是什么?我能以某种方式解决它吗?

可能重复@Stijn我已经看到了这个问题,但问题是在Windows 10之前它根本没有发生在我身上。我不知道什么会导致端口耗尽,我只知道在升级到Windows10之前它运行良好。也许是微软改变了什么,打破了它?可能。您是否尝试过在另一台Windows 10计算机上运行您的代码,以确保这不是导致问题的特定计算机?@Stijn我实际上没有尝试,因为我没有其他可用的计算机,但我在另一台Windows 8计算机上测试了它,它在那里工作正常。这可能是一个可以绕过的内存/套接字API限制吗?也许操作系统以某种方式将内存限制在进程中,从而导致抛出异常?这是一种假设,操作系统将尝试在不将UDP数据报扔到地板上的情况下获取UDP数据报。你没有给它一个像样的机会。提醒您的代码已经损坏,在实践中永远无法工作,这并不是一个bug。你必须和微软谈谈你的理由,但不要指望他们会非常乐于接受。