Opciones de socket de SOL_SOCKET

En las tablas siguientes se describen SOL_SOCKET opciones de socket. Consulte las páginas de referencia de las funciones getsockopt y setsockopt para obtener más información sobre cómo obtener y ajustar opciones de socket.

Para enumerar protocolos y detectar las propiedades admitidas en cada protocolo instalado, use la función WSAEnumProtocols, WSCEnumProtocols o WSCEnumProtocols32.

Algunas opciones de socket se deben explicar mejor que lo que se indica en estas tablas; estas opciones incluyen vínculos a otras páginas de interés.

Note

Todas las opciones de socket de SOL_SOCKET se aplican igualmente a IPv4 e IPv6 (excepto SO_BROADCAST, ya que la difusión no se implementa en IPv6).

 

Opciones de socket de SOL_SOCKET

Opción Obtener Establecer Tipo optval Description
PVD_CONFIG Sí Sí char [] Objeto de estructura de datos opaco que contiene información de configuración para el proveedor de servicios. Esta opción depende de la implementación.
SO_ACCEPTCONN Sí DWORD (booleano) Devuelve si un socket está en modo de escucha. Esta opción solo es Válida para los protocolos orientados a la conexión.
SO_BROADCAST Sí Sí DWORD (booleano) Configure un socket para enviar datos de difusión. Esta opción solo es Válida para los protocolos que admiten la difusión (IPX y UDP, por ejemplo).
SO_BSP_STATE Sí CSADDR_INFO Devuelve la dirección local, el puerto local, la dirección remota, el puerto remoto, el tipo de socket y el protocolo que usa un socket. Consulte la referencia de SO_BSP_STATE para obtener más información.
SO_CONDITIONAL_ACCEPT Sí Sí DWORD (booleano) Indica si la aplicación aceptará o rechazará las conexiones entrantes, no por la pila de protocolos. Consulte la referencia de SO_CONDITIONAL_ACCEPT para obtener más información.
SO_CONNDATA Sí Sí char [] Datos adicionales, no en el flujo de datos de red normal, que se envía con solicitudes de red para establecer una conexión. Esta opción la usan protocolos heredados como DECNet, OSI TP4 y otros. Esta opción no es compatible con el protocolo TCP/IP en Windows.
SO_CONNDATALEN Sí DWORD Longitud, en bytes, de datos adicionales, no en el flujo de datos de red normal, que se envía con solicitudes de red para establecer una conexión. Esta opción la usan protocolos heredados como DECNet, OSI TP4 y otros. Esta opción no es compatible con el protocolo TCP/IP en Windows.
SO_CONNECT_TIME Sí DWORD Devuelve el número de segundos que se ha conectado un socket. Esta opción solo es válida para los protocolos orientados a la conexión.
SO_CONNOPT Sí Sí char [] Datos de opción de conexión adicionales, no en el flujo de datos de red normal, que se envía con solicitudes de red para establecer una conexión. Esta opción la usan protocolos heredados como DECNet, OSI TP4 y otros. Esta opción no es compatible con el protocolo TCP/IP en Windows.
SO_CONNOPTLEN Sí DWORD Longitud, en bytes, de datos de opción de conexión, no en el flujo de datos de red normal, que se envía con solicitudes de red para establecer una conexión. Esta opción la usan protocolos heredados como DECNet, OSI TP4 y otros. Esta opción no es compatible con el protocolo TCP/IP en Windows.
SO_DISCDATA Sí Sí char [] Datos adicionales, no en el flujo de datos de red normal, que se envía con solicitudes de red para desconectar una conexión. Esta opción la usan protocolos heredados como DECNet, OSI TP4 y otros. Esta opción no es compatible con el protocolo TCP/IP en Windows.
SO_DISCDATALEN Sí DWORD Longitud, en bytes, de datos adicionales, no en el flujo de datos de red normal, que se envía con solicitudes de red para desconectar una conexión. Esta opción la usan protocolos heredados como DECNet, OSI TP4 y otros. Esta opción no es compatible con el protocolo TCP/IP en Windows.
SO_DISCOPT Sí Sí char [] Datos adicionales de la opción de desconexión, no en el flujo de datos de red normal, que se envía con solicitudes de red para desconectar una conexión. Esta opción la usan protocolos heredados como DECNet, OSI TP4 y otros. Esta opción no es compatible con el protocolo TCP/IP en Windows.
SO_DISCOPTLEN Sí DWORD Longitud, en bytes, de datos de opción de desconexión adicionales, no en el flujo de datos de red normal, que se envía con solicitudes de red para desconectar una conexión. Esta opción la usan protocolos heredados como DECNet, OSI TP4 y otros. Esta opción no es compatible con el protocolo TCP/IP en Windows.
SO_DEBUG Sí Sí DWORD (booleano) Habilite la salida de depuración. Actualmente, los proveedores de Microsoft no generan ninguna información de depuración.
SO_DONTLINGER Sí Sí DWORD (booleano) Indica el estado del miembro l_onoff de la estructura persistente asociada a un socket. Si este miembro es distinto de cero, un socket permanece abierto durante una cantidad de tiempo especificada después de una llamada de función closesocket para permitir que se envíen los datos en cola. Esta opción solo es válida para protocolos confiables y orientados a la conexión.
SO_DONTROUTE Sí Sí DWORD (booleano) Indica que los datos salientes deben enviarse en cualquier interfaz a la que esté enlazado el socket y no a un enrutado en alguna otra interfaz. Esta opción solo es Válida para los protocolos orientados a mensajes. Microsoft proveedores omiten silenciosamente esta opción y siempre consultan la tabla de enrutamiento para encontrar la interfaz saliente adecuada.
SO_ERROR Sí DWORD Devuelve el último código de error en este socket. Este código de error por socket no siempre se establece inmediatamente.
SO_EXCLUSIVEADDRUSE Sí Sí DWORD (booleano) Impide que cualquier otro socket se enlace a la misma dirección y puerto. Esta opción debe establecerse antes de llamar a la función de enlace . Consulte la referencia de SO_EXCLUSIVEADDRUSE para obtener más información.
SO_GROUP_ID Sí int sin firma Esta opción de socket está reservada y no debe usarse.
SO_GROUP_PRIORITY Sí Sí int Esta opción de socket está reservada y no debe usarse.
SO_KEEPALIVE Sí Sí DWORD (booleano) Habilita keep-alive para una conexión de socket. Válido solo para los protocolos que admiten la noción de keep-alive (protocolos orientados a la conexión). Para TCP, el tiempo de espera de mantenimiento predeterminado es de 2 horas y el intervalo de mantenimiento activo es de 1 segundo. El número predeterminado de sondeos keep-alive varía en función de la versión de Windows. Consulte la referencia de SO_KEEPALIVE para obtener más información.
SO_LINGER Sí Sí estructura persistente Indica el estado de la estructura persistente asociada a un socket. Si el miembro l_onoff de la estructura persistente es distinto de cero, un socket permanece abierto durante un período de tiempo especificado después de una llamada de función closesocket para permitir que se envíen los datos en cola. La cantidad de tiempo, en segundos, para permanecer abierta se especifica en el miembro l_linger de la estructura persistente . Esta opción solo es válida para protocolos confiables y orientados a la conexión.
SO_MAX_MSG_SIZE Sí DWORD Devuelve el tamaño máximo del mensaje saliente para los sockets orientados a mensajes admitidos por el protocolo. No tiene ningún significado para los sockets orientados a flujos.
SO_MAXDG Sí DWORD Devuelve el tamaño máximo, en bytes, para los datagramas de salida admitidos por el protocolo. Esta opción de socket no tiene ningún significado para los sockets orientados a flujos.
SO_MAXPATHDG Sí DWORD Devuelve el tamaño máximo, en bytes, de los datagramas salientes admitidos por el protocolo a una dirección de destino determinada. Esta opción de socket no tiene ningún significado para los sockets orientados a flujos. Microsoft proveedores pueden tratar esto de forma silenciosa como SO_MAXDG.
SO_OOBINLINE Sí Sí DWORD (booleano) Indica que los datos no enlazados deben devolverse en línea con datos normales. Esta opción solo es válida para los protocolos orientados a la conexión que admiten datos fuera de banda.
SO_OPENTYPE Sí Sí DWORD Una vez establecido, afecta a si los sockets posteriores que se crean no se superponen. Los valores posibles para esta opción son SO_SYNCHRONOUS_ALERT y SO_SYNCHRONOUS_NONALERT. Esta opción no se debe usar. En su lugar, use la función WSASocket y deje desactivada la WSA_FLAG_OVERLAPPED bit en el parámetro dwFlags .
SO_PAUSE_ACCEPT Sí Sí DWORD (booleano) Use esta opción para escuchar sockets. Cuando se establece la opción, el socket responde a todas las conexiones entrantes con un RST en lugar de aceptarlas.
SO_PORT_SCALABILITY Sí Sí DWORD (booleano) Permite la escalabilidad del puerto local para un socket, ya que permite maximizar la asignación de puertos mediante la asignación de puertos comodín varias veces para diferentes pares de puertos de direcciones locales en un equipo local. En plataformas en las que ambas opciones están disponibles, prefiera SO_REUSE_UNICASTPORT en lugar de esta opción. Consulte la referencia de SO_PORT_SCALABILITY para obtener más información.
SO_PROTOCOL_INFO Sí WSAPROTOCOL_INFO Esta opción se define en la opción de socket SO_PROTOCOL_INFOW si se define la macro UNICODE. Si no se define la macro UNICODE, esta opción se define en la opción de socket SO_PROTOCOL_INFOA.
SO_PROTOCOL_INFOA Sí WSAPROTOCOL_INFOA Devuelve la estructura WSAPROTOCOL_INFOA del socket especificado.
SO_PROTOCOL_INFOW Sí WSAPROTOCOL_INFOW Devuelve la estructura WSAPROTOCOL_INFOW del socket especificado.
SO_RANDOMIZE_PORT Sí Sí DWORD (booleano) Esta opción debe establecerse en un socket sin enlazar. Cuando se establece SO_RANDOMIZE_PORT y se selecciona un puerto efímero en el socket, se enlaza un número de puerto aleatorio. Los puertos de reutilización automática (puertos seleccionados mediante SO_REUSE_UNICASTPORT) también aleatoricen el puerto devuelto, por lo que si una aplicación establece SO_REUSE_UNICASTPORT e intenta establecer SO_RANDOMIZE_PORT, se produce un error en la segunda llamada setockopt .
SO_RCVBUF Sí Sí DWORD El espacio total de búfer por socket reservado para las recepciones. Esto no está relacionado con SO_MAX_MSG_SIZE y no se corresponde necesariamente con el tamaño de la ventana de recepción tcp.
SO_RCVLOWAT Sí Sí DWORD Una opción de socket de BSD UNIX incluida para la compatibilidad con versiones anteriores. Esta opción establece el número mínimo de bytes que se procesarán para las operaciones de entrada de socket. La Windows proveedor TCP/IP no admite esta opción. Si esta opción se usa en Windows Vista y versiones posteriores, las funciones getsockopt y setsockopt generan un error con WSAEINVAL. En versiones anteriores de Windows, estas funciones producen un error con WSAENOPROTOOPT.
SO_RCVTIMEO Sí Sí DWORD Tiempo de espera, en milisegundos, para bloquear las llamadas de recepción. El valor predeterminado de esta opción es cero, lo que indica que una operación de recepción no agotará el tiempo de espera. Si se agota el tiempo de espera de una llamada de recepción de bloqueo, la conexión está en un estado indeterminado y debe cerrarse.
Si el socket se crea mediante la función WSASocket , el parámetro dwFlags debe tener establecido el atributo WSA_FLAG_OVERLAPPED para que el tiempo de espera funcione correctamente. De lo contrario, el tiempo de espera nunca surte efecto.
SO_REUSEADDR Sí Sí DWORD (booleano) Permite que un socket se enlace a una dirección y un puerto que ya están en uso. La opción SO_EXCLUSIVEADDRUSE puede impedirlo.
SO_REUSE_UNICASTPORT Sí Sí DWORD (booleano) Cuando se establece, permita la reutilización de puertos efímeros para las funciones de conexión de la API de Winsock que requieren un enlace explícito, como ConnectEx. Tenga en cuenta que las funciones de conexión con un enlace implícito (como conectarse sin un enlace explícito) tienen esta opción establecida de forma predeterminada. Use esta opción en lugar de SO_PORT_SCALABILITY en plataformas en las que ambos estén disponibles.
SO_REUSE_MULTICASTPORT Sí DWORD Cuando se establece en un socket, esta opción indica que el socket nunca se usará para recibir paquetes de unidifusión y, en consecuencia, que su puerto se puede compartir con otras aplicaciones de solo multidifusión. Establecer el valor en 1 permite compartir siempre el tráfico de multidifusión en el puerto. Establecer el valor en 0 (valor predeterminado) deshabilita este comportamiento.
SO_SNDBUF Sí Sí DWORD Espacio total de búfer por socket reservado para los envíos. Esto no está relacionado con SO_MAX_MSG_SIZE y no se corresponde necesariamente con el tamaño de una ventana de envío TCP.
SO_SNDLOWAT Sí Sí DWORD Una opción de socket de BSD UNIX incluida para la compatibilidad con versiones anteriores. Esta opción establece el número mínimo de bytes que se van a procesar para las operaciones de salida de socket. La Windows proveedor TCP/IP no admite esta opción. Si esta opción se usa en Windows Vista y versiones posteriores, las funciones getsockopt y setsockopt generan un error con WSAEINVAL. En versiones anteriores de Windows, estas funciones producen un error con WSAENOPROTOOPT.
SO_SNDTIMEO Sí Sí DWORD Tiempo de espera, en milisegundos, para bloquear las llamadas de envío. El valor predeterminado de esta opción es cero, lo que indica que una operación de envío no agotará el tiempo de espera. Si se agota el tiempo de espera de una llamada de envío de bloqueo, la conexión está en un estado indeterminado y debe cerrarse.
Si el socket se crea mediante la función WSASocket , el parámetro dwFlags debe tener establecido el atributo WSA_FLAG_OVERLAPPED para que el tiempo de espera funcione correctamente. De lo contrario, el tiempo de espera nunca surte efecto.
SO_TYPE Sí DWORD Devuelve el tipo de socket para el socket especificado (SOCK_STREAM o SOCK_DGRAM, por ejemplo).
SO_UPDATE_ACCEPT_CONTEXT Sí DWORD (booleano) Esta opción se usa con la función AcceptEx . Esta opción actualiza las propiedades del socket que se heredan del socket de escucha. Esta opción debe establecerse si las funciones getpeername, getsockname, getsockopt o setsockopt se usarán en el socket aceptado.
SO_UPDATE_CONNECT_CONTEXT Sí DWORD (booleano) Esta opción se usa con las funciones ConnectEx, WSAConnectByList y WSAConnectByName . Esta opción actualiza las propiedades del socket después de establecer la conexión. Esta opción debe establecerse si las funciones getpeername, getsockname, getsockopt, setsockopt o shutdown se usarán en el socket conectado.
SO_USELOOPBACK Sí Sí DWORD (booleano) Use la dirección de bucle invertido local al enviar datos desde este socket. Esta opción solo se debe usar cuando todos los datos enviados también se reciban localmente. La Windows proveedor TCP/IP no admite esta opción. Si esta opción se usa en Windows Vista y versiones posteriores, las funciones getsockopt y setsockopt generan un error con WSAEINVAL. En versiones anteriores de Windows, estas funciones producen un error con WSAENOPROTOOPT.

compatibilidad de Windows con opciones de SOL_SOCKET

Opción Windows 10 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP Windows 2000 Windows NT4 Windows 9x/ME
PVD_CONFIG
SO_ACCEPTCONN Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_BROADCAST Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_BSP_STATE Sí Sí Sí Sí
SO_CONDITIONAL_ACCEPT Sí Sí Sí Sí Sí Sí Sí
SO_CONNDATA Sí Sí Sí Sí Sí Sí Sí Sí
SO_CONNDATALEN Sí Sí Sí Sí Sí Sí Sí Sí
SO_CONNECT_TIME Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_CONNOPT Sí Sí Sí Sí Sí Sí Sí Sí
SO_CONNOPTLEN Sí Sí Sí Sí Sí Sí Sí Sí
SO_DISCDATA Sí Sí Sí Sí Sí Sí Sí Sí
SO_DISCDATALEN Sí Sí Sí Sí Sí Sí Sí Sí
SO_DISCOPT Sí Sí Sí Sí Sí Sí Sí Sí
SO_DISCOPTLEN Sí Sí Sí Sí Sí Sí Sí Sí
SO_DEBUG Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_DONTLINGER Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_DONTROUTE Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_ERROR Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_EXCLUSIVEADDRUSE Sí Sí Sí Sí Sí Sí Sí Sí SP4+
SO_GROUP_ID Sí Sí Sí Sí
SO_GROUP_PRIORITY Sí Sí Sí Sí
SO_KEEPALIVE Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_LINGER Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_MAX_MSG_SIZE Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_MAXDG Sí Sí Sí Sí Sí Sí Sí
SO_MAXPATHDG Sí Sí Sí Sí Sí Sí Sí
SO_OOBINLINE Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_OPENTYPE Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_PORT_SCALABILITY Sí Sí Sí
SO_PROTECT Sí
SO_PROTOCOL_INFO Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_PROTOCOL_INFOA Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_PROTOCOL_INFOW Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_RCVBUF Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_RCVLOWAT
SO_RCVTIMEO Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_RANDOMIZE_PORT Sí Sí Sí Sí
SO_REUSEADDR Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_REUSE_UNICASTPORT Sí
SO_REUSE_MULTICASTPORT Sí
SO_SNDBUF Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_SNDLOWAT
SO_SNDTIMEO Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_TYPE Sí Sí Sí Sí Sí Sí Sí Sí Sí
SO_UPDATE_ACCEPT_CONTEXT Sí Sí Sí Sí Sí Sí Sí Sí
SO_UPDATE_CONNECT_CONTEXT Sí Sí Sí Sí Sí Sí
SO_USELOOPBACK

Remarks

Las opciones de socket de SOL_SOCKET se definen en varios archivos de encabezado de Winsock:

  • Winsock2.h
  • Mswsock.h
  • Ws2def.h

En el kit de desarrollo de software (SDK) de Microsoft Windows publicado para Windows Vista y versiones posteriores, la organización de los archivos de encabezado ha cambiado y SOL_SOCKET nivel se define en el archivo de encabezado Ws2def.h que se incluye automáticamente en el archivo de encabezado Winsock2.h. Algunas de las opciones de socket SOL_SOCKET se definen en los archivos de encabezado Winsock2.h y Mswsock.h . Las opciones de socket SOL_SOCKET restantes se definen en el archivo de encabezado Ws2def.h que el archivo de encabezado Winsock2.h incluye automáticamente. Ws2def.h nunca se debe usar directamente.

En el Kit de desarrollo de software de plataforma (SDK) publicado para Windows Server 2003 y Windows XP, el nivel de SOL_SOCKET se define en el archivo de encabezado Winsock2.h. Las opciones de socket SOL_SOCKET se definen en los archivos de encabezado Winsock2.h y Mswsock.h .

Requirements

Requisito Valor
Cabecera
Winsock2.h;
Mswsock.h;
Ws2def.h (incluya Winsock2.h)