Opzioni socket IPPROTO_TCP
La tabella seguente descrive IPPROTO_TCP opzioni socket che si applicano ai socket creati per le famiglie di indirizzi IPv4 e IPv6 (AF_INET e AF_INET6) con il parametro del protocollo specificato come TCP (IPPROTO_TCP). Per altre informazioni su come ottenere e impostare le opzioni di socket, vedere le pagine di riferimento per le funzioni getsockopt e setockopt .
Per enumerare i protocolli e individuare le proprietà supportate per ogni protocollo installato, usare la funzione WSAEnumProtocols, WSCEnumProtocols o WSCEnumProtocols32.
Opzioni
Opzione | Recupero | Set | Tipo Optval | Descrizione |
---|---|---|---|---|
TCP_BSDURGENT | sì | sì | DWORD (booleano) | Se TRUE, il provider di servizi implementa lo stile BSD (Berkeley Software Distribution) (impostazione predefinita) per la gestione dei dati accelerati. Questa opzione è l'inverso dell'opzione TCP_EXPEDITED_1122. Questa opzione può essere impostata solo una volta sulla connessione. Una volta impostata questa opzione, questa opzione non può essere disattivata. Questa opzione non è necessaria per essere implementata dai provider di servizi. L'opzione è abilitata (impostata su TRUE) per impostazione predefinita. |
TCP_EXPEDITED_1122 | sì | sì | DWORD (booleano) | Se TRUE, il provider di servizi implementa i dati accelerati come specificato in RFC-1222. In caso contrario, viene usato lo stile BSD (Berkeley Software Distribution) (impostazione predefinita). Questa opzione può essere impostata solo una volta sulla connessione. Una volta impostata questa opzione, questa opzione non può essere disattivata. Questa opzione non è necessaria per essere implementata dai provider di servizi. |
TCP_FAIL_CONNECT_ON_ICMP_ERROR | sì | sì | DWORD (booleano) | Se TRUE, una chiamata API di connessione restituirà alla ricezione di un errore ICMP con valore WSAEHOSTUNREACH. L'indirizzo di origine dell'errore sarà quindi disponibile tramite l'opzione socket TCP_ICMP_ERROR_INFO. Se FALSE, il socket si comporta normalmente. Il valore predefinito è disabilitato (impostato su FALSE). Per la sicurezza dei tipi, è consigliabile usare le funzioni WSAGetFailConnectOnIcmpError e WSASetFailConnectOnIcmpError anziché usare direttamente l'opzione socket. |
TCP_ICMP_ERROR_INFO | sì | no | ICMP_ERROR_INFO | Recupera le informazioni di un errore ICMP ricevuto dal socket TCP durante una chiamata di connessione non riuscita. Valido solo in un socket TCP in cui TCP_FAIL_CONNECT_ON_ICMP_ERROR è stato abilitato in precedenza e la connessione ha restituito WSAEHOSTUNREACH. La query non blocca. Se viene eseguita una query correttamente e il valore optlen restituito è 0, non è stato ricevuto alcun errore ICMP dall'ultima chiamata di connessione. Se è stato ricevuto un errore ICMP, le informazioni saranno disponibili fino a quando non viene chiamato di nuovo la connessione . Le informazioni vengono restituite come struttura ICMP_ERROR_INFO . Per la sicurezza dei tipi, è consigliabile usare direttamente la funzione WSAGetIcmpErrorInfo anziché usare direttamente l'opzione socket. |
TCP_KEEPCNT | sì | sì | DWORD | Ottiene o imposta il numero di probe TCP keep alive che verranno inviati prima che la connessione venga terminata. Non è possibile impostare TCP_KEEPCNT su un valore maggiore di 255. |
TCP_MAXRT | sì | sì | DWORD | Se questo valore non è negativo, rappresenta il timeout di connessione desiderato in secondi. Se è -1, rappresenta una richiesta per disabilitare il timeout della connessione, ad esempio la connessione ritrasmetterà per sempre. Se il timeout della connessione è disabilitato, il timeout di ritrasmissione aumenta esponenzialmente per ogni ritrasmissione fino al valore massimo di 60sec e quindi rimane lì. |
TCP_NODELAY | sì | sì | DWORD (booleano) | Abilita o disabilita l'algoritmo Nagle per i socket TCP. Questa opzione è disabilitata (impostata su FALSE) per impostazione predefinita. |
TCP_TIMESTAMPS | sì | sì | DWORD (booleano) | Abilita o disabilita i timestamp RFC 1323. Si noti che esiste anche una configurazione globale per timestamp (impostazione predefinita disattivata), "Timestamps" in (set/get)-nettcpsetting. L'impostazione di questa opzione socket esegue l'override dell'impostazione di configurazione globale. |
TCP_FASTOPEN | sì | sì | DWORD (booleano) | Abilita o disabilita RFC 7413 TCP Fast Open, che consente di avviare l'invio di dati durante la fase di handshake a tre vie di apertura di una connessione. Si noti che per usare l'apertura rapida, è consigliabile usare ConnectEx per creare la connessione iniziale e specificare i dati nel parametro lpSendBuffer della funzione da trasferire durante il processo handshake. Alcuni dei dati in lpSendBuffer verranno trasferiti nel protocollo Fast Open. |
TCP_KEEPIDLE | sì | sì | DWORD | Ottiene o imposta il numero di secondi di una connessione TCP rimarrà inattiva prima che i probe keepalive vengano inviati al remoto.
Nota: |
TCP_KEEPINTVL | sì | sì | DWORD | Ottiene o imposta il numero di secondi di una connessione TCP attendendo una risposta keepalive prima di inviare un altro probe keepalive.
Nota: |
Supporto di Windows per le opzioni di IPPROTO_TCP
Opzione | Windows 10 | Windows 7 | Windows Server 2008 | Windows Vista |
---|---|---|---|---|
TCP_BSDURGENT | x | x | x | x |
TCP_EXPEDITED_1122 | x | x | x | x |
TCP_KEEPCNT | A partire da Windows 10, versione 1703 | |||
TCP_MAXRT | x | x | x | x |
TCP_NODELAY | x | x | x | x |
TCP_TIMESTAMPS | x | x | x | x |
TCP_FASTOPEN | A partire da Windows 10, versione 1607 |
Opzione | Windows Server 2003 | Windows XP | Windows 2000 | Windows NT4 | Windows 9x/Me | |
---|---|---|---|---|---|---|
TCP_BSDURGENT | x | x | x | x | ||
TCP_EXPEDITED_1122 | x | x | x | |||
TCP_KEEPCNT | ||||||
TCP_MAXRT | ||||||
TCP_NODELAY | x | x | x | x | ||
TCP_TIMESTAMPS | ||||||
TCP_FASTOPEN |
Commenti
In Microsoft Windows Software Development Kit (SDK) rilasciato per Windows Vista e versioni successive, l'organizzazione dei file di intestazione è stata modificata e IPPROTO_TCP livello è definito nel file di intestazione Ws2def.h che viene incluso automaticamente nel file di intestazione Winsock2.h . Le opzioni di socket IPPROTO_TCP , ad eccezione di TCP_BSDURGENT, vengono definite nel file di intestazione Ws2ipdef.h incluso automaticamente nel file di intestazione Ws2tcpip.h . L'opzione TCP_BSDURGENT per motivi cronologici è definita nel file di intestazione Mswsock.h . I file di intestazione Ws2def.h e Ws2ipdef.h non devono mai essere usati direttamente.
Requisiti
Requisito | Valore |
---|---|
Intestazione |
|
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per