Share via


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 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 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 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 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 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 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 DWORD (booleano) Abilita o disabilita l'algoritmo Nagle per i socket TCP. Questa opzione è disabilitata (impostata su FALSE) per impostazione predefinita.
TCP_TIMESTAMPS 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 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 DWORD Ottiene o imposta il numero di secondi di una connessione TCP rimarrà inattiva prima che i probe keepalive vengano inviati al remoto.

Nota:
Questa opzione è disponibile a partire da Windows 10 versione 1709.


TCP_KEEPINTVL DWORD Ottiene o imposta il numero di secondi di una connessione TCP attendendo una risposta keepalive prima di inviare un altro probe keepalive.

Nota:
Questa opzione è disponibile a partire da Windows 10 versione 1709.


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
Ws2def.h (includono Winsock2.h);
Winsock2.h in Windows Server 2003, Windows XP e Windows 2000