Condividi tramite


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
WSANOTINITIALISED
Prima di usare questa funzione, è necessario che venga eseguita una chiamata WSAStartup riuscita.
WSAENETDOWN
Il sottosistema di rete non è riuscito.
WSAEFAULT
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 .
WSAEINPROGRESS
È in corso una chiamata di Windows Sockets 1.1 bloccante oppure il provider di servizi sta ancora elaborando una funzione di callback.
WSAEINVAL
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.
WSAENOPROTOOPT
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.
WSAENOTSOCK
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
Ws2ipdef.h (include Ws2tcpip.h)

Vedi anche

Socket dual stack

getsockopt

in6_pktinfo

IP_PKTINFO

Opzioni socket IPPROTO_IPV6

Setsockopt

Socket

WSAMSG

LPFN_WSARECVMSG (WSARecvMsg)