Help and Support

Id. de artículo: 201213 - Última revisión: lunes, 12 de febrero de 2007 - Versión: 2.3

Error: Error Send() con error WSAENOBUFS sobre sockets de bloqueo

Expandir todo | Contraer todo

Síntomas

Cuando grandes bloques de datos (por ejemplo, 3 y 4 MB) se envían a través de un socket de bloqueo, finalmente, Enviar un error 10055, WSAENOBUFS.

La documentación en pantalla indica que Enviar a través de un bloqueo debería bloquear socket si no hay disponible ningún espacio de búfer del sistema:
Si no está disponible en el sistema de transporte para contener los datos que se va a transmitir ningún espacio de búfer, envío se bloqueará a menos que se ha colocado el socket en un modo de no bloqueo. En la secuencia de no bloqueo sockets orientados a, el número de bytes escritos pueden ser entre 1 y la longitud solicitada, dependiendo de la disponibilidad de búfer en equipos cliente y servidor.

Solución

Cuando encuentre el problema descrito en la sección "Síntomas", tenga en cuenta con uno de las siguientes soluciones:
  • Utilice el socket en modo de bloqueo desactivado o asincrónica.
  • Interrumpir bloques de datos de gran tamaño a pequeñas y especifique un búfer relativamente pequeño en Enviar para sockets, preferiblemente no mayores que 64 KB de bloqueo.
  • Establezca la opción de socket SO_SNDBUF en 0 (cero) para permitir que la pila enviar desde el búfer de aplicación directamente.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

La información de este artículo se refiere a:
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows 98 Standard Edition
  • Microsoft Windows 95
Palabras clave: 
kbmt kbdswnet2003swept kbbug kbwinsock KB201213 KbMtes
Traducción automáticaTraducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 201213  (http://support.microsoft.com/kb/201213/en-us/ )

Seleccione idioma

 

Related Support Centers