Opzioni socket IPPROTO_TCP
Nella tabella seguente vengono descritte IPPROTO_TCP opzioni socket applicabili ai socket creati per le famiglie di indirizzi IPv4 e IPv6 (AF_INET e AF_INET6) con il parametro del protocollo alla funzione socket specificata come TCP (IPPROTO_TCP). 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.
Opzioni
Opzione | Recupero | Set | Tipo Optval | Descrizione |
---|---|---|---|---|
TCP_BSDURGENT | yes | yes | DWORD (booleano) | Se TRUE, il provider di servizi implementa lo stile Berkeley Software Distribution (BSD) (impostazione predefinita) per la gestione dei dati accelerati. Questa opzione è l'inversa dell'opzione TCP_EXPEDITED_1122. Questa opzione può essere impostata sulla connessione una sola volta. Dopo aver impostato 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 | yes | yes | DWORD (booleano) | Se TRUE, il provider di servizi implementa i dati accelerati come specificato in RFC-1222. In caso contrario, viene usato lo stile Berkeley Software Distribution (BSD) (impostazione predefinita). Questa opzione può essere impostata sulla connessione una sola volta. Dopo aver impostato 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 | yes | yes | DWORD (booleano) | Se TRUE, viene restituita una chiamata API di connessione al ricevimento 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 | yes | 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 è bloccata. Se viene eseguita una query correttamente e il valore optlen restituito è 0, non viene 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 la funzione WSAGetIcmpErrorInfo anziché usare direttamente l'opzione socket. |
TCP_KEEPCNT | yes | yes | DWORD | Ottiene o imposta il numero di probe keep-alive TCP che verranno inviati prima che la connessione venga terminata. Non è consentito impostare TCP_KEEPCNT su un valore maggiore di 255. |
TCP_MAXRT | yes | yes | 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 verrà ritrasmetti per sempre). Se il timeout della connessione è disabilitato, il timeout di ritrasmissione aumenta in modo esponenziale per ogni ritrasmissione fino al valore massimo di 60sec e rimane lì. |
TCP_NODELAY | yes | yes | DWORD (booleano) | Abilita o disabilita l'algoritmo Nagle per i socket TCP. Questa opzione è disabilitata (impostata su FALSE) per impostazione predefinita. |
TCP_TIMESTAMPS | yes | yes | DWORD (booleano) | Abilita o disabilita i timestamp RFC 1323. Si noti che è disponibile anche una configurazione globale per i timestamp (impostazione predefinita disattivata), "Timestamp" in (set/get)-nettcpsetting. L'impostazione di questa opzione socket esegue l'override dell'impostazione di configurazione globale. |
TCP_FASTOPEN | yes | yes | DWORD (booleano) | Abilita o disabilita RFC 7413 TCP Fast Open, che consente di iniziare a inviare dati durante la fase di handshake a tre vie di apertura di una connessione. Si noti che per usare le operazioni di apertura rapida, è necessario usare ConnectEx per stabilire la connessione iniziale e specificare i dati nel parametro lpSendBuffer di tale funzione da trasferire durante il processo di handshake. Alcuni dati in lpSendBuffer verranno trasferiti nel protocollo Fast Open. |
TCP_KEEPIDLE | yes | yes | DWORD | Ottiene o imposta il numero di secondi in cui una connessione TCP rimarrà inattiva prima che i probe keepalive vengano inviati al remoto.
Nota: |
TCP_KEEPINTVL | yes | yes | DWORD | Ottiene o imposta il numero di secondi di attesa di una connessione TCP per 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 | yes | sì | sì | yes |
TCP_EXPEDITED_1122 | yes | sì | sì | yes |
TCP_KEEPCNT | A partire da Windows 10, versione 1703 | |||
TCP_MAXRT | yes | sì | sì | yes |
TCP_NODELAY | yes | sì | sì | yes |
TCP_TIMESTAMPS | yes | sì | sì | yes |
TCP_FASTOPEN | A partire da Windows 10, versione 1607 |
Opzione | Windows Server 2003 | Windows XP | Windows 2000 | Windows NT4 | Windows 9x/Me | |
---|---|---|---|---|---|---|
TCP_BSDURGENT | yes | sì | sì | yes | ||
TCP_EXPEDITED_1122 | yes | sì | yes | |||
TCP_KEEPCNT | ||||||
TCP_MAXRT | ||||||
TCP_NODELAY | yes | sì | sì | yes | ||
TCP_TIMESTAMPS | ||||||
TCP_FASTOPEN |
Osservazioni:
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 , incluso automaticamente nel file di intestazione Winsock2.h . Le opzioni socket IPPROTO_TCP , ad eccezione di TCP_BSDURGENT, vengono definite nel file di intestazione Ws2ipdef.h che viene 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 |
|