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 quelle che queste tabelle possono trasmettere; tali opzioni contengono collegamenti a pagine aggiuntive.

Nota

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

 

Opzioni socket SOL_SOCKET

Opzione Recupero Set Tipo Optval Descrizione
PVD_CONFIG char [] Oggetto struttura di dati opaca contenente informazioni di configurazione per il provider di servizi. Questa opzione dipende dall'implementazione.
SO_ACCEPTCONN 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 DWORD (booleano) Configurare un socket per l'invio di dati trasmessi. Questa opzione è valida solo per i protocolli che supportano la trasmissione (ad esempio IPX e UDP).
SO_BSP_STATE CSADDR_INFO Restituisce l'indirizzo locale, la porta locale, l'indirizzo remoto, la porta remota, il tipo di socket e il protocollo usati da un socket. Per altre informazioni, vedere le informazioni di riferimento sulle SO_BSP_STATE .
SO_CONDITIONAL_ACCEPT 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 sulle SO_CONDITIONAL_ACCEPT .
SO_CONNDATA 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 DWORD Lunghezza, in byte, di dati aggiuntivi, non nel normale flusso di dati di rete, che viene inviata 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 DWORD Restituisce il numero di secondi in cui è stato connesso un socket. Questa opzione è valida solo per i protocolli orientati alla connessione.
SO_CONNOPT 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 DWORD Lunghezza, in byte, dei dati delle opzioni di connessione, non nel normale flusso di dati di rete, che viene inviata 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 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 DWORD Lunghezza, in byte, di dati aggiuntivi, non nel normale flusso di dati di rete, che viene inviata 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 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 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 DWORD (booleano) Abilitare l'output di debug. I provider Microsoft attualmente non generano alcuna informazione di debug.
SO_DONTLINGER DWORD (booleano) Indica lo stato del membro l_onoffdella 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 abilitare l'invio dei dati in coda. Questa opzione è valida solo per protocolli affidabili e orientati alla connessione.
SO_DONTROUTE DWORD (booleano) Indica che i dati in uscita devono essere inviati su qualsiasi interfaccia a cui è associato il socket e non un route su un'altra interfaccia. Questa opzione è valida solo per i protocolli orientati ai messaggi. I provider Microsoft ignorano automaticamente questa opzione e consultano sempre la tabella di routing per trovare l'interfaccia in uscita appropriata.
SO_ERROR DWORD Restituisce l'ultimo codice di errore in questo socket. Questo codice di errore per socket non è sempre impostato immediatamente.
SO_EXCLUSIVEADDRUSE DWORD (booleano) Impedisce a qualsiasi altro socket di associarsi allo stesso indirizzo e alla stessa porta. Questa opzione deve essere impostata prima di chiamare la funzione di associazione . Per altre informazioni, vedere il riferimento SO_EXCLUSIVEADDRUSE .
SO_GROUP_ID int senza segno Questa opzione socket è riservata e non deve essere usata.
SO_GROUP_PRIORITY INT Questa opzione socket è riservata e non deve essere usata.
SO_KEEPALIVE 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 è 2 ore e l'intervallo keep-alive è 1 secondo. Il numero predefinito di probe keep-alive varia in base alla versione di Windows. Per altre informazioni, vedere il riferimento SO_KEEPALIVE .
SO_LINGER struct linger Indica lo stato della struttura persistente associata a un socket. Se il membro l_onoffdella struttura persistente è diverso da zero, un socket rimane aperto per un periodo di tempo specificato dopo una chiamata di funzione closesocket per abilitare l'invio dei dati in coda. La quantità di tempo, in secondi, per rimanere aperta viene specificata nel membro l_lingerdella struttura persistente. Questa opzione è valida solo per protocolli affidabili e orientati alla connessione.
SO_MAX_MSG_SIZE DWORD Restituisce le dimensioni massime 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 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 DWORD Restituisce le dimensioni massime, in byte, per i datagrammi in uscita supportati dal protocollo in un determinato indirizzo di destinazione. Questa opzione socket non ha alcun significato per i socket orientati al flusso. I provider Microsoft possono considerare in modo invisibile l'operazione come SO_MAXDG.
SO_OOBINLINE 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 out-of-band.
SO_OPENTYPE DWORD Dopo aver impostato, influisce sul fatto che i socket successivi creati non verranno sovrapposti. I valori possibili per questa opzione sono SO_SYNCHRONOUS_ALERT e SO_SYNCHRONOUS_NONALERT. Questa opzione non deve essere usata. Usare invece la funzione WSASocket e lasciare disattivato il WSA_FLAG_OVERLAPPED bit nel parametro dwFlags .
SO_PAUSE_ACCEPT DWORD(boolean) Usare questa opzione per i socket in ascolto. Quando l'opzione è impostata, il socket risponde a tutte le connessioni in ingresso con una RST anziché accettarle.
SO_PORT_SCALABILITY DWORD (booleano) Consente la scalabilità delle porte locali per un socket consentendo l'allocazione della porta ingrandita assegnando più volte porte jolly per coppie di porte indirizzi locali diverse in un computer locale. Nelle piattaforme in cui sono disponibili entrambe le opzioni, preferire SO_REUSE_UNICASTPORT anziché questa opzione. Per altre informazioni, vedere il riferimento SO_PORT_SCALABILITY .
SO_PROTOCOL_INFO WSAPROTOCOL_INFO Questa opzione è definita per l'opzione socket SO_PROTOCOL_INFOW se la macro UNICODE è definita. Se la macro UNICODE non è definita, questa opzione viene definita per l'opzione socket SO_PROTOCOL_INFOA.
SO_PROTOCOL_INFOA WSAPROTOCOL_INFOA Restituisce la struttura WSAPROTOCOL_INFOA per il socket specificato
SO_PROTOCOL_INFOW WSAPROTOCOL_INFOW Restituisce la struttura WSAPROTOCOL_INFOW per il socket specificato
SO_RANDOMIZE_PORT DWORD(boolean) Questa opzione deve essere impostata su un socket non in uscita. Quando SO_RANDOMIZE_PORT è impostato e viene selezionata una porta temporaneo nel socket, viene associato un numero di porta casuale. Le porte di riutilizzo automatico (porte selezionate usando SO_REUSE_UNICASTPORT) consentono anche 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 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 DWORD Opzione socket da 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 di Windows. Se questa opzione viene usata in Windows Vista e versioni successive, le funzioni getsockopt e setockopt hanno esito negativo con WSAEINVAL. Nelle versioni precedenti di Windows queste funzioni non riescono con WSAENOPROTOOPT.
SO_RCVTIMEO DWORD Timeout, in millisecondi, per bloccare le chiamate di ricezione. Il valore predefinito per questa opzione è zero, che indica che un'operazione di ricezione non verrà timeout. Se una chiamata di ricezione di blocco si verifica il timeout, 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 per il timeout per funzionare correttamente. In caso contrario, il timeout non ha mai effetto.
SO_REUSEADDR DWORD (booleano) Consente a un socket di associare un indirizzo e una porta già in uso. L'opzione SO_EXCLUSIVEADDRUSE può impedire questa operazione.
SO_REUSE_UNICASTPORT DWORD (booleano) Se impostato, consentire il riutilizzo delle porte temporaneo per le funzioni di connessione api Winsock che richiedono un binding esplicito, ad esempio ConnectEx. Si noti che le funzioni di connessione con un binding implicito (ad esempio la connessione senza un binding esplicito) dispongono di questa opzione impostata per impostazione predefinita. Usare questa opzione anziché SO_PORT_SCALABILITY nelle piattaforme in cui sono disponibili entrambe.
SO_REUSE_MULTICASTPORT DWORD Se impostato su un socket, questa opzione indica che il socket non verrà mai usato per ricevere pacchetti unicast e di conseguenza che la porta può essere condivisa con altre applicazioni di solacast. 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 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 invio TCP.
SO_SNDLOWAT DWORD Opzione socket da 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 del socket. Questa opzione non è supportata dal provider TCP/IP di Windows. Se questa opzione viene usata in Windows Vista e versioni successive, le funzioni getsockopt e setockopt hanno esito negativo con WSAEINVAL. Nelle versioni precedenti di Windows queste funzioni non riescono con WSAENOPROTOOPT.
SO_SNDTIMEO DWORD Timeout, in millisecondi, per bloccare le chiamate di invio. Il valore predefinito per questa opzione è zero, che indica che un'operazione di invio non verrà timeout. Se si verifica un timeout della 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 per il timeout per funzionare correttamente. In caso contrario, il timeout non ha mai effetto.
SO_TYPE DWORD Restituisce il tipo di socket per il socket specificato (SOCK_STREAM o SOCK_DGRAM, ad esempio).
SO_UPDATE_ACCEPT_CONTEXT DWORD (booleano) Questa opzione viene usata con la funzione AcceptEx . Questa opzione aggiorna le proprietà del socket ereditato dal socket in ascolto. Questa opzione deve essere impostata se le funzioni getpeername, getockname, getsockopt o setockopt devono essere usate nel socket accettato.
SO_UPDATE_CONNECT_CONTEXT DWORD (booleano) Questa opzione viene usata con le funzioni ConnectEx, WSAConnectByList e WSAConnectByName. Questa opzione aggiorna le proprietà del socket dopo aver stabilito la connessione. Questa opzione deve essere impostata se le funzioni getpeername, getockname, getockopt, setockopt o arresto devono essere usate nel socket connesso.
SO_USELOOPBACK DWORD (booleano) Usare l'indirizzo di loopback locale durante l'invio di dati da questo socket. Questa opzione deve essere usata solo quando tutti i dati inviati verranno ricevuti in locale. Questa opzione non è supportata dal provider TCP/IP di Windows. Se questa opzione viene usata in Windows Vista e versioni successive, le funzioni getsockopt e setockopt hanno esito negativo con WSAEINVAL. Nelle versioni precedenti di Windows queste funzioni non riescono con WSAENOPROTOOPT.

Supporto di Windows per le opzioni di SOL_SOCKET

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

Commenti

Le opzioni del 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 definita nel file di intestazione Ws2def.h che viene automaticamente incluso nel file di intestazione Winsock2.h . Alcune delle opzioni di socket SOL_SOCKET sono definite nei file di intestazione Winsock2.h e Mswsock.h. Le opzioni rimanenti SOL_SOCKET socket sono definite nel file di intestazione Ws2def.h che viene incluso automaticamente dal file di intestazione Winsock2.h . Ws2def.h non deve mai essere usato direttamente.

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

Requisiti

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