Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 |
|