opzione socket IPV6_PKTINFO
L'opzione socket IPV6_PKTINFO consente a un'applicazione di abilitare o disabilitare la restituzione delle informazioni sui pacchetti dalla funzione LPFN_WSARECVMSG (WSARecvMsg) in un socket IPv6.
Per eseguire una query sullo stato di questa opzione socket, chiamare la funzione getsockopt . Per impostare questa opzione, chiamare la funzione setsockopt con i parametri seguenti.
Valore dell'opzione socket
La costante che rappresenta questa opzione socket è 19.
Sintassi
int getsockopt(
(SOCKET) s, // descriptor identifying a socket
(int) IPPROTO_IPV6, // level
(int) IPV6_PKTINFO, // optname
(char *) optval, // output buffer,
(int) optlen, // size of output buffer
);
int setsockopt(
(SOCKET) s, // descriptor identifying a socket
(int) IPPROTO_IPV6, // level
(int) IPV6_PKTINFO, // optname
(char *) optval, // input buffer,
(int) optlen, // size of input buffer
);
Parametri
-
s [in]
-
Descrittore che identifica il socket.
-
level [in]
-
Livello in cui è definita l'opzione. Usare IPPROTO_IPV6 per questa operazione.
-
optname [in]
-
Opzione socket per cui ottenere o impostare il valore. Usare IPV6_PKTINFO per questa operazione.
-
optval [out]
-
Puntatore al buffer contenente il valore per l'opzione da impostare. Questo parametro deve puntare al buffer uguale o maggiore della dimensione di un valore DWORD .
Questo valore viene considerato come un valore booleano con 0 usato per indicare FALSE (disabilitato) e un valore diverso da zero per indicare TRUE (abilitato).
-
optlen [in, out]
-
Puntatore alle dimensioni, in byte, del buffer optval . Questa dimensione deve essere uguale o maggiore della dimensione di un valore DWORD .
Valore restituito
Se l'operazione viene completata correttamente, la funzione getsockopt o setsockopt restituisce zero.
Se l'operazione non riesce, viene restituito un valore di SOCKET_ERROR e è possibile recuperare un codice di errore specifico chiamando WSAGetLastError.
Codice di errore | Significato |
---|---|
Prima di usare questa funzione, è necessario che venga eseguita una chiamata WSAStartup riuscita. |
|
Il sottosistema di rete non è riuscito. |
|
Uno dei parametri optval o optlen punta alla memoria che non si trova in una parte valida dello spazio indirizzi utente. Questo errore viene restituito anche se il valore a cui punta il parametro optlen è minore della dimensione di un valore DWORD . |
|
È in corso una chiamata di Windows Sockets 1.1 bloccante oppure il provider di servizi sta ancora elaborando una funzione di callback. |
|
Argomento fornito non valido. Questo errore viene restituito se il parametro di livello è sconosciuto o non valido. In Windows Vista e versioni successive, questo errore viene restituito anche se il socket si trovava in uno stato transitorio. |
|
L'opzione è sconosciuta o non supportata dalla famiglia di protocolli indicata. Questo errore viene restituito se il parametro di tipo per il descrittore socket passato nel parametro s non è stato SOCK_DGRAM o SOCK_RAW. |
|
Il descrittore non è un socket. |
Commenti
La funzione getsockopt chiamata con l'opzione socket IPV6_PKTINFO consente a un'applicazione di determinare se le informazioni sui pacchetti devono essere restituite dalla funzione LPFN_WSARECVMSG (WSARecvMsg) per un socket IPv6.
La funzione setsockopt chiamata con l'opzione socket IPV6_PKTINFO consente a un'applicazione di abilitare o disabilitare la restituzione di informazioni sui pacchetti dalla funzione LPFN_WSARECVMSG (WSARecvMsg). L'opzione IPV6_PKTINFO per un socket è disabilitata (impostata su FALSE) per impostazione predefinita.
Quando questa opzione socket è abilitata in un socket IPv6 di tipo SOCK_DGRAM o SOCK_RAW, la funzione LPFN_WSARECVMSG (WSARecvMsg) restituisce informazioni sui pacchetti nella struttura WSAMSG a cui punta il parametro lpMsg . Uno degli oggetti dati del controllo nella struttura WSAMSG restituita conterrà una struttura in6_pktinfo utilizzata per archiviare le informazioni sull'indirizzo del pacchetto ricevuto.
Per i datagrammi ricevuti dalla funzione LPFN_WSARECVMSG (WSARecvMsg) su IPv6, il membro Control della struttura WSAMSG ricevuta conterrà una struttura WSABUF che contiene una struttura WSACMSGHDR . Il membro cmsg_level di questa struttura WSACMSGHDR conterrà IPPROTO_IPV6, il membro cmsg_type di questa struttura conterrà IPV6_PKTINFO e il membro cmsg_data conterrà una struttura in6_pktinfo utilizzata per archiviare le informazioni sull'indirizzo del pacchetto IPv6 ricevuto. L'indirizzo IPv6 nella struttura in6_pktinfo è l'indirizzo IPv6 da cui è stato ricevuto il pacchetto.
Per un socket di datagrammi dual stack, se un'applicazione richiede la funzione LPFN_WSARECVMSG (WSARecvMsg) per restituire informazioni sui pacchetti in una struttura WSAMSG per i datagrammi ricevuti su IPv4, IP_PKTINFO'opzione socket deve essere impostata su true nel socket. Se solo l'opzione IPV6_PKTINFO è impostata su true nel socket, le informazioni sui pacchetti verranno fornite per i datagrammi ricevuti su IPv6, ma potrebbero non essere fornite per i datagrammi ricevuti tramite IPv4.
Si noti che il file di intestazione Ws2ipdef.h viene automaticamente incluso in Ws2tcpip.h e non deve mai essere usato direttamente.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows XP [solo app desktop] |
Server minimo supportato |
Windows Server 2003 [solo app desktop] |
Intestazione |
|
Vedi anche