Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 |
|