Opzioni socket SOL_SOCKET

Le tabelle seguenti descrivono SOL_SOCKET opzioni socket. Per altre informazioni su come ottenere e impostare le opzioni socket, vedere le pagine di riferimento della funzione getsockopt e setsockopt.

Per enumerare i protocolli e individuare le proprietà supportate per ogni protocollo installato, usare la funzione WSAEnumProtocols, WSCEnumProtocols o WSCEnumProtocols32.

Alcune opzioni socket richiedono più spiegazioni di quanto queste tabelle possano trasmettere; tali opzioni contengono collegamenti a pagine aggiuntive.

Note

Tutte le opzioni socket SOL_SOCKET si applicano allo stesso modo a IPv4 e IPv6 (tranne SO_BROADCAST, poiché la trasmissione non è implementata in IPv6).

 

Opzioni socket SOL_SOCKET

Option Get Set Tipo Optval Description
PVD_CONFIG yes yes char [] Oggetto struttura di dati opaca contenente informazioni di configurazione per il provider di servizi. Questa opzione dipende dall'implementazione.
SO_ACCEPTCONN yes DWORD (booleano) Restituisce un valore che indica se un socket è in modalità di ascolto. Questa opzione è valida solo per i protocolli orientati alla connessione.
SO_BROADCAST yes yes DWORD (booleano) Configurare un socket per l'invio di dati broadcast. Questa opzione è valida solo per i protocolli che supportano la trasmissione (ad esempio IPX e UDP).
SO_BSP_STATE yes CSADDR_INFO Restituisce l'indirizzo locale, la porta locale, l'indirizzo remoto, la porta remota, il tipo di socket e il protocollo utilizzati da un socket. Per altre informazioni, vedere le informazioni di riferimento sulle SO_BSP_STATE .
SO_CONDITIONAL_ACCEPT yes yes DWORD (booleano) Indica se le connessioni in ingresso devono essere accettate o rifiutate dall'applicazione, non dallo stack di protocolli. Per altre informazioni, vedere le informazioni di riferimento SO_CONDITIONAL_ACCEPT.
SO_CONNDATA yes yes char [] Dati aggiuntivi, non nel normale flusso di dati di rete, inviati con richieste di rete per stabilire una connessione. Questa opzione viene usata dai protocolli legacy, ad esempio DECNet, OSI TP4 e altri. Questa opzione non è supportata dal protocollo TCP/IP in Windows.
SO_CONNDATALEN yes DWORD Lunghezza, in byte, di dati aggiuntivi, non nel normale flusso di dati di rete, inviato con richieste di rete per stabilire una connessione. Questa opzione viene usata dai protocolli legacy, ad esempio DECNet, OSI TP4 e altri. Questa opzione non è supportata dal protocollo TCP/IP in Windows.
SO_CONNECT_TIME yes DWORD Restituisce il numero di secondi di connessione di un socket. Questa opzione è valida solo per i protocolli orientati alla connessione.
SO_CONNOPT yes yes char [] Dati aggiuntivi delle opzioni di connessione, non nel normale flusso di dati di rete, inviati con richieste di rete per stabilire una connessione. Questa opzione viene usata dai protocolli legacy, ad esempio DECNet, OSI TP4 e altri. Questa opzione non è supportata dal protocollo TCP/IP in Windows.
SO_CONNOPTLEN yes DWORD Lunghezza, in byte, dei dati delle opzioni di connessione, non nel normale flusso di dati di rete, inviato con richieste di rete per stabilire una connessione. Questa opzione viene usata dai protocolli legacy, ad esempio DECNet, OSI TP4 e altri. Questa opzione non è supportata dal protocollo TCP/IP in Windows.
SO_DISCDATA yes yes char [] Dati aggiuntivi, non nel normale flusso di dati di rete, inviati con richieste di rete per disconnettere una connessione. Questa opzione viene usata dai protocolli legacy, ad esempio DECNet, OSI TP4 e altri. Questa opzione non è supportata dal protocollo TCP/IP in Windows.
SO_DISCDATALEN yes DWORD Lunghezza, in byte, di dati aggiuntivi, non nel normale flusso di dati di rete, che viene inviato con richieste di rete per disconnettere una connessione. Questa opzione viene usata dai protocolli legacy, ad esempio DECNet, OSI TP4 e altri. Questa opzione non è supportata dal protocollo TCP/IP in Windows.
SO_DISCOPT yes yes char [] Dati aggiuntivi delle opzioni di disconnessione, non nel normale flusso di dati di rete, inviati con richieste di rete per disconnettere una connessione. Questa opzione viene usata dai protocolli legacy, ad esempio DECNet, OSI TP4 e altri. Questa opzione non è supportata dal protocollo TCP/IP in Windows.
SO_DISCOPTLEN yes DWORD Lunghezza, in byte, di dati aggiuntivi delle opzioni di disconnessione, non nel normale flusso di dati di rete, che viene inviato con richieste di rete per disconnettere una connessione. Questa opzione viene usata dai protocolli legacy, ad esempio DECNet, OSI TP4 e altri. Questa opzione non è supportata dal protocollo TCP/IP in Windows.
SO_DEBUG yes yes DWORD (booleano) Abilitare l'output di debug. I provider Microsoft attualmente non generano alcuna informazione di debug.
SO_DONTLINGER yes yes DWORD (booleano) Indica lo stato del membro l_onoff della struttura persistente associata a un socket. Se questo membro è diverso da zero, un socket rimane aperto per un periodo di tempo specificato dopo una chiamata di funzione closesocket per consentire l'invio dei dati in coda. Questa opzione è valida solo per protocolli affidabili orientati alla connessione.
SO_DONTROUTE yes yes DWORD (booleano) Indica che i dati in uscita devono essere inviati su qualsiasi interfaccia a cui è associato il socket e non un instradato su un'altra interfaccia. Questa opzione è valida solo per i protocolli orientati ai messaggi. Microsoft provider ignorano automaticamente questa opzione e consultano sempre la tabella di routing per trovare l'interfaccia in uscita appropriata.
SO_ERROR yes DWORD Restituisce l'ultimo codice di errore in questo socket. Questo codice di errore per socket non è sempre impostato immediatamente.
SO_EXCLUSIVEADDRUSE yes yes DWORD (booleano) Impedisce a qualsiasi altro socket di eseguire l'associazione allo stesso indirizzo e alla stessa porta. Questa opzione deve essere impostata prima di chiamare la funzione bind . Per altre informazioni, vedere le informazioni di riferimento SO_EXCLUSIVEADDRUSE.
SO_GROUP_ID yes unsigned int Questa opzione socket è riservata e non deve essere usata.
SO_GROUP_PRIORITY yes yes int Questa opzione socket è riservata e non deve essere usata.
SO_KEEPALIVE yes yes DWORD (booleano) Abilita keep-alive per una connessione socket. Valido solo per i protocolli che supportano la nozione di keep-alive (protocolli orientati alla connessione). Per TCP, il timeout keep-alive predefinito è di 2 ore e l'intervallo keep-alive è di 1 secondo. Il numero predefinito di probe keep-alive varia in base alla versione di Windows. Per altre informazioni, vedere le informazioni di riferimento SO_KEEPALIVE.
SO_LINGER yes yes struct linger Indica lo stato della struttura persistente associata a un socket. Se il membro l_onoff della struttura persistente è diverso da zero, un socket rimane aperto per un periodo di tempo specificato dopo una chiamata di funzione closesocket per consentire l'invio dei dati in coda. La quantità di tempo, in secondi, per rimanere aperta viene specificata nel membro l_linger della struttura persistente . Questa opzione è valida solo per protocolli affidabili orientati alla connessione.
SO_MAX_MSG_SIZE yes DWORD Restituisce la dimensione massima dei messaggi in uscita per i socket orientati ai messaggi supportati dal protocollo. Non ha alcun significato per i socket orientati al flusso.
SO_MAXDG yes DWORD Restituisce le dimensioni massime, in byte, per i datagrammi in uscita supportati dal protocollo. Questa opzione socket non ha alcun significato per i socket orientati al flusso.
SO_MAXPATHDG yes DWORD Restituisce le dimensioni massime, in byte, per i datagrammi in uscita supportati dal protocollo a un indirizzo di destinazione specificato. Questa opzione socket non ha alcun significato per i socket orientati al flusso. i provider di Microsoft possono considerarsi invisibile all'utente come SO_MAXDG.
SO_OOBINLINE yes yes DWORD (booleano) Indica che i dati non associati devono essere restituiti in linea con dati regolari. Questa opzione è valida solo per i protocolli orientati alla connessione che supportano i dati fuori banda.
SO_OPENTYPE yes yes DWORD Una volta impostata, influisce sul fatto che i socket successivi creati non si sovrappongano. I valori possibili per questa opzione sono SO_SYNCHRONOUS_ALERT e SO_SYNCHRONOUS_NONALERT. Questa opzione non deve essere utilizzata. Usare invece la funzione WSASocket e lasciare disattivata la WSA_FLAG_OVERLAPPED bit nel parametro dwFlags .
SO_PAUSE_ACCEPT yes yes DWORD(boolean) Usare questa opzione per l'ascolto dei socket. Quando l'opzione è impostata, il socket risponde a tutte le connessioni in ingresso con un RST invece di accettarle.
SO_PORT_SCALABILITY yes yes DWORD (booleano) Abilita la scalabilità delle porte locali per un socket consentendo l'allocazione delle porte ingrandita allocando più volte le porte con caratteri jolly per diverse coppie di porte degli indirizzi locali in un computer locale. Nelle piattaforme in cui sono disponibili entrambe le opzioni, preferire SO_REUSE_UNICASTPORT anziché questa opzione. Per altre informazioni, vedere le informazioni di riferimento sulle SO_PORT_SCALABILITY .
SO_PROTOCOL_INFO yes WSAPROTOCOL_INFO Questa opzione è definita per l'opzione socket SO_PROTOCOL_INFOW se è definita la macro UNICODE. Se la macro UNICODE non è definita, questa opzione viene definita per l'opzione socket SO_PROTOCOL_INFOA.
SO_PROTOCOL_INFOA yes WSAPROTOCOL_INFOA Restituisce la struttura WSAPROTOCOL_INFOA per il socket specificato
SO_PROTOCOL_INFOW yes WSAPROTOCOL_INFOW Restituisce la struttura WSAPROTOCOL_INFOW per il socket specificato
SO_RANDOMIZE_PORT yes yes DWORD(boolean) Questa opzione deve essere impostata su un socket non associato. Quando SO_RANDOMIZE_PORT è impostato e viene selezionata una porta temporanea nel socket, viene associato un numero di porta casuale. Anche le porte di riutilizzo automatico (porte selezionate usando SO_REUSE_UNICASTPORT) consentono di casualizzare la porta restituita, quindi se un'applicazione imposta SO_REUSE_UNICASTPORT e quindi tenta di impostare SO_RANDOMIZE_PORT, la seconda chiamata setockopt ha esito negativo.
SO_RCVBUF yes yes DWORD Spazio totale del buffer per socket riservato per le ricevute. Non è correlato a SO_MAX_MSG_SIZE e non corrisponde necessariamente alle dimensioni della finestra di ricezione TCP.
SO_RCVLOWAT yes yes DWORD Opzione socket di BSD UNIX inclusa per la compatibilità con le versioni precedenti. Questa opzione imposta il numero minimo di byte da elaborare per le operazioni di input socket. Questa opzione non è supportata dal provider TCP/IP Windows. Se questa opzione viene usata in Windows Vista e versioni successive, le funzioni getsockopt e setsockopt hanno esito negativo con WSAEINVAL. Nelle versioni precedenti di Windows queste funzioni hanno esito negativo con WSAENOPROTOOPT.
SO_RCVTIMEO yes yes DWORD Timeout, espresso in millisecondi, per il blocco delle chiamate di ricezione. L'impostazione predefinita per questa opzione è zero, che indica che un'operazione di ricezione non si verifica il timeout. Se si verifica il timeout di una chiamata di ricezione di blocco, la connessione si trova in uno stato indeterminato e deve essere chiusa.
Se il socket viene creato usando la funzione WSASocket , il parametro dwFlags deve avere l'attributo WSA_FLAG_OVERLAPPED impostato affinché il timeout funzioni correttamente. In caso contrario, il timeout non diventa mai effettivo.
SO_REUSEADDR yes yes DWORD (booleano) Consente a un socket di eseguire il binding a un indirizzo e a una porta già in uso. L'opzione SO_EXCLUSIVEADDRUSE può impedire questo problema.
SO_REUSE_UNICASTPORT yes yes DWORD (booleano) Quando impostata, consentire il riutilizzo temporaneo delle porte per le funzioni di connessione API Winsock che richiedono un'associazione esplicita, ad esempio ConnectEx. Si noti che le funzioni di connessione con un'associazione implicita, ad esempio la connessione senza binding esplicito, hanno questa opzione impostata per impostazione predefinita. Usare questa opzione invece di SO_PORT_SCALABILITY sulle piattaforme in cui sono disponibili entrambe.
SO_REUSE_MULTICASTPORT yes DWORD Se impostata su un socket, questa opzione indica che il socket non verrà mai usato per ricevere pacchetti unicast e di conseguenza la porta può essere condivisa con altre applicazioni solo multicast. L'impostazione del valore su 1 consente di condividere sempre il traffico multicast sulla porta. L'impostazione del valore su 0 (impostazione predefinita) disabilita questo comportamento.
SO_SNDBUF yes yes DWORD Spazio totale del buffer per socket riservato per gli invii. Non è correlato a SO_MAX_MSG_SIZE e non corrisponde necessariamente alle dimensioni di una finestra di trasmissione TCP.
SO_SNDLOWAT yes yes DWORD Opzione socket di BSD UNIX inclusa per la compatibilità con le versioni precedenti. Questa opzione imposta il numero minimo di byte da elaborare per le operazioni di output socket. Questa opzione non è supportata dal provider TCP/IP Windows. Se questa opzione viene usata in Windows Vista e versioni successive, le funzioni getsockopt e setsockopt hanno esito negativo con WSAEINVAL. Nelle versioni precedenti di Windows queste funzioni hanno esito negativo con WSAENOPROTOOPT.
SO_SNDTIMEO yes yes DWORD Timeout, espresso in millisecondi, per bloccare le chiamate di invio. Il valore predefinito per questa opzione è zero, che indica che un'operazione di invio non si verifica il timeout. Se si verifica il timeout di una chiamata di invio di blocco, la connessione si trova in uno stato indeterminato e deve essere chiusa.
Se il socket viene creato usando la funzione WSASocket , il parametro dwFlags deve avere l'attributo WSA_FLAG_OVERLAPPED impostato affinché il timeout funzioni correttamente. In caso contrario, il timeout non diventa mai effettivo.
SO_TYPE yes DWORD Restituisce il tipo di socket per il socket specificato ,ad esempio SOCK_STREAM o SOCK_DGRAM.
SO_UPDATE_ACCEPT_CONTEXT yes DWORD (booleano) Questa opzione viene usata con la funzione AcceptEx . Questa opzione aggiorna le proprietà del socket ereditate dal socket in ascolto. Questa opzione deve essere impostata se le funzioni getpeername, getsockname, getsockopt o setsockopt devono essere usate nel socket accettato.
SO_UPDATE_CONNECT_CONTEXT yes DWORD (booleano) Questa opzione viene usata con le funzioni ConnectEx, WSAConnectByList e WSAConnectByName . Questa opzione aggiorna le proprietà del socket dopo la connessione. Questa opzione deve essere impostata se le funzioni getpeername, getockname, getsockopt, setsockopt o shutdown devono essere usate sul socket connesso.
SO_USELOOPBACK yes yes DWORD (booleano) Usare l'indirizzo di loopback locale quando si inviano dati da questo socket. Questa opzione deve essere usata solo quando tutti i dati inviati verranno ricevuti anche in locale. Questa opzione non è supportata dal provider TCP/IP Windows. Se questa opzione viene usata in Windows Vista e versioni successive, le funzioni getsockopt e setsockopt hanno esito negativo con WSAEINVAL. Nelle versioni precedenti di Windows queste funzioni hanno esito negativo con WSAENOPROTOOPT.

supporto di Windows per le opzioni di SOL_SOCKET

Option 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 yes yes yes yes yes yes yes yes yes
SO_BROADCAST yes yes yes yes yes yes yes yes yes
SO_BSP_STATE yes yes yes yes
SO_CONDITIONAL_ACCEPT yes yes yes yes yes yes yes
SO_CONNDATA yes yes yes yes yes yes yes yes
SO_CONNDATALEN yes yes yes yes yes yes yes yes
SO_CONNECT_TIME yes yes yes yes yes yes yes yes yes
SO_CONNOPT yes yes yes yes yes yes yes yes
SO_CONNOPTLEN yes yes yes yes yes yes yes yes
SO_DISCDATA yes yes yes yes yes yes yes yes
SO_DISCDATALEN yes yes yes yes yes yes yes yes
SO_DISCOPT yes yes yes yes yes yes yes yes
SO_DISCOPTLEN yes yes yes yes yes yes yes yes
SO_DEBUG yes yes yes yes yes yes yes yes yes
SO_DONTLINGER yes yes yes yes yes yes yes yes yes
SO_DONTROUTE yes yes yes yes yes yes yes yes yes
SO_ERROR yes yes yes yes yes yes yes yes yes
SO_EXCLUSIVEADDRUSE yes yes yes yes yes yes yes Sì SP4+
SO_GROUP_ID yes yes yes yes
SO_GROUP_PRIORITY yes yes yes yes
SO_KEEPALIVE yes yes yes yes yes yes yes yes yes
SO_LINGER yes yes yes yes yes yes yes yes yes
SO_MAX_MSG_SIZE yes yes yes yes yes yes yes yes yes
SO_MAXDG yes yes yes yes yes yes yes
SO_MAXPATHDG yes yes yes yes yes yes yes
SO_OOBINLINE yes yes yes yes yes yes yes yes yes
SO_OPENTYPE yes yes yes yes yes yes yes yes yes
SO_PORT_SCALABILITY yes yes yes
SO_PROTECT yes
SO_PROTOCOL_INFO yes yes yes yes yes yes yes yes yes
SO_PROTOCOL_INFOA yes yes yes yes yes yes yes yes yes
SO_PROTOCOL_INFOW yes yes yes yes yes yes yes yes yes
SO_RCVBUF yes yes yes yes yes yes yes yes yes
SO_RCVLOWAT
SO_RCVTIMEO yes yes yes yes yes yes yes yes yes
SO_RANDOMIZE_PORT yes yes yes yes
SO_REUSEADDR yes yes yes yes yes yes yes yes yes
SO_REUSE_UNICASTPORT yes
SO_REUSE_MULTICASTPORT yes
SO_SNDBUF yes yes yes yes yes yes yes yes yes
SO_SNDLOWAT
SO_SNDTIMEO yes yes yes yes yes yes yes yes yes
SO_TYPE yes yes yes yes yes yes yes yes yes
SO_UPDATE_ACCEPT_CONTEXT yes yes yes yes yes yes yes yes
SO_UPDATE_CONNECT_CONTEXT yes yes yes yes yes yes
SO_USELOOPBACK

Remarks

Le opzioni socket SOL_SOCKET sono definite in diversi file di intestazione Winsock:

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

Nel Microsoft Windows Software Development Kit (SDK) rilasciato per Windows Vista e versioni successive, l'organizzazione dei file di intestazione è stata modificata e SOL_SOCKET livello viene definito nel file di intestazione Ws2def.h che viene incluso automaticamente nel file di intestazione Winsock2.h. Alcune delle opzioni socket SOL_SOCKET sono definite nei file di intestazione Winsock2.h e Mswsock.h . Le opzioni socket rimanenti SOL_SOCKET sono definite nel file di intestazione Ws2def.h , incluso automaticamente dal file di intestazione Winsock2.h . Ws2def.h non deve mai essere usato direttamente.

Nel sdk (Platform Software Development Kit) rilasciato per Windows Server 2003 e Windows XP, il livello di SOL_SOCKET viene definito nel file di intestazione Winsock2.h. Le opzioni socket SOL_SOCKET sono definite nei file di intestazione Winsock2.h e Mswsock.h .

Requirements

Requirement Valore
Intestazione
Winsock2.h;
Mswsock.h;
Ws2def.h (include Winsock2.h)