Программа стресс-тестирования .NET выдает исключения в Windows 10

У меня есть этот метод из программы стресс-тестирования, которую я написал:

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: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full

Я запускал его на Windows 8, и он работал нормально.

Я обновился до Windows 10 около 2 недель назад, и теперь это не работает. Я подозреваю, что это как-то связано с модифицированным Socket API в Windows 10 или чем-то в этом роде.

Итак, откуда эта ошибка? И почему это происходит сейчас в Windows 10, а в Windows 8 вообще не происходило?

EDIT: Ответы на другой вопрос не решают мою проблему. Они предлагают такие вещи, как исчерпание портов, что может быть возможно, но никогда не случалось со мной, пока я не обновился до Windows 10. Программа отлично работала в Windows 8, но теперь, по причине, которую я пытаюсь понять, не работает в Windows 10 из-за этого исключения. Кроме того, в ответе говорится, что он работает в Vista, но не в 7, что говорит о том, что между ОС есть что-то другое, что ограничивает эту программу стресс-тестирования. Что это? Можно как-то решить?


person BlueRay101    schedule 19.08.2015    source источник
comment
@Stijn Я уже видел этот вопрос, но дело в том, что это вообще не случалось со мной до Windows 10. Я понятия не имею, что должно вызывать исчерпание порта, я просто знаю, что он работал нормально, прежде чем я обновился до Windows 10. Может быть, Microsoft изменила что-то, что сломало его?   -  person BlueRay101    schedule 19.08.2015
comment
Возможно. Пробовали ли вы запускать свой код на другом компьютере с Windows 10, чтобы убедиться, что проблема возникает не на этом конкретном компьютере?   -  person user247702    schedule 19.08.2015
comment
@Stijn На самом деле я не пробовал, потому что у меня нет другого доступного, но я протестировал его на другом компьютере с Windows 8, и он там работает нормально. Может быть, это ограничение API памяти/сокета, которое можно как-то обойти? Может быть, ОС каким-то образом ограничивает память для процесса, из-за чего возникает исключение?   -  person BlueRay101    schedule 19.08.2015
comment
Предполагается, что ОС предпримет некоторую попытку передать дейтаграмму UDP, не бросая ее на пол. Вы не даете ему достойный шанс на это. Напоминание о том, что ваш код устарел и никогда не заработает на практике, не является ошибкой. Вам придется поговорить с Microsoft, чтобы аргументировать свою позицию, однако не ожидайте, что они будут очень восприимчивы.   -  person Hans Passant    schedule 19.08.2015