“No se pudo realizar una operación en un socket porque el sistema carecía de suficiente espacio de búfer o porque la cola estaba llena”

He escrito una aplicación de multidifusión IP en C #. Se comstack bien, pero en tiempo de ejecución esta línea:

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

lanza una excepción de socket no controlada:

No se pudo realizar una operación en un socket porque el sistema carecía de suficiente espacio de búfer o porque la cola estaba llena

Busqué el error en Google y la gente sugirió eliminar el interruptor de 3GB (mi sistema operativo es Windows 7) que puede haber sido activado. Hice eso, pero sigo teniendo el mismo error. ¿Cual podría ser el problema?

Esto parece suceder cuando te quedas sin recursos (sockets?) O memoria. En el símbolo del sistema, ejecute: netstat -ab

No estoy seguro de cuál es el límite de socket. Actualmente estoy luchando contra un problema como este.

Notas sobre los límites de socket: http://support.microsoft.com/kb/196271

Podría ser agotamiento portuario. Cuando la (s) aplicación (es) realiza demasiadas conexiones salientes en un período de tiempo corto o no dispone de las conexiones salientes correctamente, se queda sin puertos.

Aquí está el enlace a una explicación bastante extensa y una forma de diagnosticar el problema.

Puede encontrar este mensaje de error si se exceden los límites de recursos. Un System.Net.Sockets.Socket implementa IDisposable . ¿Estás desechando tus zócalos una vez que hayas terminado con ellos?

Dejarlos para el recolector de basura es una excelente manera de filtrar recursos.

Tengo el mismo error, pero solo en Windows 7. Si ejecuto mi misma aplicación de multidifusión en Vista, funciona. Se abre un cuadro de diálogo del sistema para desbloquear el comportamiento de la aplicación, pero se ejecuta. Este es probablemente un cambio de permisos de red en Win7. Todavía estoy buscando una solución. Si alguien más encuentra uno, por favor publique.

Tuve el mismo error en Windows Server 2008. En mi caso, después de reiniciar el problema del servidor (con 2 años de disponibilidad) se resolvió.

vea – http://support.microsoft.com/kb/2553549 y https://support.microsoft.com/en-us/kb/929851 (usted determina cuántos puertos de salida dynamics desea). Junto con este segundo artículo, establezca TcpTimedWaitDelay en un valor decimal de dword de 30. Así que cuando los sockets se liberan al sistema, se borran más rápido. Ver – technet.microsoft.com/en-us/library/cc938217.aspx

He tenido el mismo problema (también conocido como error 10055) al intentar conectar con una base de datos MySQL local. Creo que necesita boost la cantidad de puertos dynamics que permite el sistema operativo.

La solución que funcionó para mí se mencionó aquí . Creo que puede ayudarlo también, ya que está usando Windows. ¡La mejor de las suertes!