«Операция над сокетом не может быть выполнена из-за недостатка места в системе или из-за переполнения очереди» - PullRequest
21 голосов
/ 11 декабря 2010

Я написал IP-приложение для многоадресной рассылки на C #. Компилируется нормально, но во время выполнения эта строка:

sock.SetSocketOption(SocketOptionLevel.IP,
                     SocketOptionName.AddMembership,
                     new MulticastOption(IPAddress.Parse("224.100.0.1")));

создает исключение необработанного сокета:

Операция над сокетом не может быть выполнена из-за недостатка буферного пространства в системе или из-за переполнения очереди

Я искал ошибку в Google, и люди предложили удалить переключатель 3 ГБ (моя ОС - Windows 7), который мог быть включен. Я сделал это, но все равно получаю ту же ошибку. В чем может быть проблема?

Ответы [ 8 ]

8 голосов
/ 24 июня 2011

Это, кажется, происходит, когда у вас заканчиваются ресурсы (сокеты?) Или память.В командной строке запустите: netstat -ab

Я не уверен, что такое предел сокета.В настоящее время я сам борюсь с такой проблемой.

Замечания по ограничениям сокетов: http://support.microsoft.com/kb/196271

7 голосов
/ 06 августа 2013

Это может быть исчерпание порта.Когда приложение (я) устанавливает слишком много исходящих соединений за короткий промежуток времени или неправильно распределяет исходящие соединения - у вас заканчиваются порты.

Здесь - это ссылка на довольно длинное объяснение испособ диагностики проблемы

4 голосов
/ 01 ноября 2011

Это сообщение об ошибке может появиться, если превышены пределы ресурса. A System.Net.Sockets.Socket реализует IDisposable. Вы избавляетесь от своих розеток, когда закончите с ними?

Оставить их для сборщика мусора - отличный способ утечки ресурсов.

3 голосов
/ 15 июля 2011

У меня такая же ошибка, но только в Windows 7. Если я запускаю такое же многоадресное приложение в Vista, оно работает. Появляется системный диалог, чтобы разблокировать поведение из приложения, но он работает. Вероятно, это изменило сетевые разрешения в win7. Я все еще ищу решение. Если кто-то еще найдет его, пожалуйста, напишите.

1 голос
/ 04 декабря 2015

У меня была такая же ошибка на Windows Server 2008. В моем случае после перезапуска сервера (с временем безотказной работы 2 года) проблема решена.

0 голосов
/ 14 февраля 2019

Получила эту ошибку при обращении к внешнему провайдеру электронной почты в Швеции Loopia на Windows Server 2012 R2 Datacenter x64.

Сервер не перезагружался почти год. После перезагрузки все заработало.

enter image description here

Операция над сокетом не может быть выполнена, поскольку система недостаточно места в буфере или из-за переполнения очереди 194,9,94,72:993

Описание: необработанное исключение произошло во время выполнения текущий веб-запрос. Пожалуйста, просмотрите стек проследить для получения дополнительной информации об ошибке и где она возникла в код.

Сведения об исключении: System.Net.Sockets.SocketException: An операция над сокетом не может быть выполнена из-за отсутствия системы достаточно места в буфере или потому что очередь была переполнена 194.9.94.72:993

0 голосов
/ 20 июля 2017

У меня была такая же проблема (ошибка 10055) при попытке подключиться к локальной базе данных MySQL.Я считаю, что вам нужно увеличить количество динамических портов, которые разрешает операционная система.

Упоминавшееся мной решение было упомянуто здесь Я полагаю, что оно может помочь и вам, посколькуиспользуя Windows.Желаем удачи!

0 голосов
/ 29 января 2016

см. - http://support.microsoft.com/kb/2553549 и https://support.microsoft.com/en-us/kb/929851 (вы определяете, сколько динамических выходных портов вы хотите).Наряду с этой второй статьей установите для TcpTimedWaitDelay десятичное значение dword, равное 30. Таким образом, когда сокеты попадают в систему, очистка выполняется быстрее.Смотрите - technet.microsoft.com/en-us/library/cc938217.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...