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 | sì | sì | char [] | Oggetto struttura di dati opaca contenente informazioni di configurazione per il provider di servizi. Questa opzione dipende dall'implementazione. |
SO_ACCEPTCONN | sì | 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 | sì | sì | 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 | sì | 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 | sì | sì | 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 | sì | sì | 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 | sì | 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 | sì | DWORD | Restituisce il numero di secondi in cui è stato connesso un socket. Questa opzione è valida solo per i protocolli orientati alla connessione. | |
SO_CONNOPT | sì | sì | 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 | sì | 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 | sì | sì | 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 | sì | 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 | sì | sì | 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 | sì | 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 | sì | sì | DWORD (booleano) | Abilitare l'output di debug. I provider Microsoft attualmente non generano alcuna informazione di debug. |
SO_DONTLINGER | sì | sì | 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 | sì | sì | 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 | sì | DWORD | Restituisce l'ultimo codice di errore in questo socket. Questo codice di errore per socket non è sempre impostato immediatamente. | |
SO_EXCLUSIVEADDRUSE | sì | sì | 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 | sì | int senza segno | Questa opzione socket è riservata e non deve essere usata. | |
SO_GROUP_PRIORITY | sì | sì | INT | Questa opzione socket è riservata e non deve essere usata. |
SO_KEEPALIVE | sì | sì | 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 | sì | sì | 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 | sì | 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 | sì | 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 | sì | 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 | sì | sì | 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 | sì | sì | 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 | sì | sì | 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 | sì | sì | 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 | sì | 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 | sì | WSAPROTOCOL_INFOA | Restituisce la struttura WSAPROTOCOL_INFOA per il socket specificato | |
SO_PROTOCOL_INFOW | sì | WSAPROTOCOL_INFOW | Restituisce la struttura WSAPROTOCOL_INFOW per il socket specificato | |
SO_RANDOMIZE_PORT | sì | sì | 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 | sì | sì | 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 | sì | sì | 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 | sì | sì | 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 | sì | sì | 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 | sì | sì | 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 | sì | 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 | sì | sì | 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 | sì | sì | 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 | sì | sì | 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 | sì | DWORD | Restituisce il tipo di socket per il socket specificato (SOCK_STREAM o SOCK_DGRAM, ad esempio). | |
SO_UPDATE_ACCEPT_CONTEXT | sì | 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 | sì | 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 | sì | sì | 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 |
|