Condividi tramite


Funzione di callback LPWSPGETSOCKOPT (ws2spi.h)

La funzione LPWSPGetSockOpt recupera un'opzione socket.

Sintassi

LPWSPGETSOCKOPT Lpwspgetsockopt;

int Lpwspgetsockopt(
  SOCKET s,
  int level,
  int optname,
  char *optval,
  LPINT optlen,
  LPINT lpErrno
)
{...}

Parametri

s

Descrittore che identifica un socket.

level

Livello a cui è definita l'opzione; i livelli supportati includono SOL_SOCKET. Vedere l'allegato per livelli più specifici del protocollo.

optname

Opzione socket per cui il valore deve essere recuperato.

optval

Puntatore al buffer in cui verrà restituito il valore dell'opzione richiesta.

optlen

Puntatore alle dimensioni, in byte, del buffer optval .

lpErrno

Puntatore al codice di errore.

Valore restituito

Se non si verifica alcun errore, LPWSPGetSockOpt restituisce zero. In caso contrario, viene restituito un valore di SOCKET_ERROR e un codice di errore specifico è disponibile in lpErrno.

Codice di errore Significato
WSAENETDOWN
Il sottosistema di rete non è riuscito.
WSAEFAULT
Uno dei parametri optval o optlen non è una parte valida dello spazio degli indirizzi utente o il parametro optlen è troppo piccolo.
WSAEINVAL
Il livello è sconosciuto o non valido.
WSAEINPROGRESS
La funzione viene richiamata quando un callback è in corso.
WSAENOPROTOOPT
L'opzione è sconosciuta o non supportata dalla famiglia di protocolli indicata.
WSAENOTSOCK
Il descrittore non è un socket.

Commenti

La funzione LPWSPGetSockOpt recupera il valore corrente per un'opzione socket associata a un socket di qualsiasi tipo, in qualsiasi stato e archivia il risultato di optval. Le opzioni possono esistere a più livelli di protocollo, ma sono sempre presenti a livello di socket superiore. Le opzioni influiscono sulle operazioni socket, ad esempio il routing dei pacchetti e il trasferimento dei dati OOB.

Il valore associato all'opzione selezionata viene restituito nel buffer optval. L'intero a cui punta optlen deve contenere originariamente le dimensioni di questo buffer; in caso di restituzione, verrà impostato sulle dimensioni del valore restituito. Per SO_LINGER, questa sarà la dimensione di una struttura persistente; per la maggior parte delle altre opzioni sarà la dimensione di un intero.

Il client SPI di Windows Sockets è responsabile dell'allocazione di qualsiasi spazio di memoria puntato direttamente o indirettamente da uno dei parametri specificati.

Se l'opzione non è mai stata impostata con LPWSPSetSockOpt, LPWSPGetSockOpt restituisce il valore predefinito per l'opzione.

Per altre informazioni sulle opzioni socket, vedere Opzioni socket.

level = SOL_SOCKET

Valore Type Significato Default
SO_ACCEPTCONN BOOL Il socket è in ascolto tramite LPWSPListen. FALSE a meno che non sia stato eseguito un LPWSPListen .
SO_BROADCAST BOOL Il socket è configurato per la trasmissione e la ricezione di messaggi di trasmissione. FALSE
SO_DEBUG BOOL Il debug è abilitato. FALSE
SO_DONTLINGER BOOL Se true, l'opzione SO_LINGER è disabilitata. TRUE
SO_DONTROUTE BOOL Il routing è disabilitato. L'impostazione di questa opzione socket ha esito positivo ma viene ignorata nei socket AF_INET; ha esito negativo sui socket AF_INET6 con WSAENOPROTOOPT . Questa opzione non è supportata nei socket ATM (genera un errore). FALSE
SO_ERROR numero intero Recupera lo stato degli errori e cancella. 0
SO_GROUP_ID GROUP Riservato. Null
SO_GROUP_PRIORITY numero intero Riservato. 0
SO_KEEPALIVE BOOL Keepalives viene inviato. Non supportato nei socket ATM (genera un errore). FALSE
SO_LINGER Struttura LINGER Restituisce le opzioni di ritardo correnti. 1 è attivo (impostazione predefinita), 0 è disattivato
SO_MAX_MSG_SIZE intero senza segno Dimensioni massime di un messaggio per i tipi di socket orientati ai messaggi, ad esempio SOCK_DGRAM. Non ha alcun significato per i socket orientati al flusso. Implementazione dipendente
SO_OOBINLINE BOOL I dati OOB sono ricevuti nel normale flusso di dati. FALSE
SO_PROTOCOL_INFO WSAPROTOCOL_INFO struttura Descrizione delle informazioni sul protocollo per il protocollo associato a questo socket. Dipendente dal protocollo
SO_RCVBUF numero intero Spazio totale del buffer per socket riservato per le ricevute. Non è correlato a SO_MAX_MSG_SIZE e non corrisponde necessariamente alle dimensioni della finestra di ricezione TCP. Implementazione dipendente
SO_REUSEADDR BOOL Il socket può essere associato a un indirizzo già in uso. Questa opzione non è applicabile ai socket ATM. FALSE.
SO_SNDBUF numero intero Spazio totale del buffer per socket riservato per gli invii. Non è correlato a SO_MAX_MSG_SIZE e non corrisponde necessariamente alle dimensioni di una finestra di invio TCP. Implementazione dipendente
SO_TYPE numero intero Tipo di socket (ad esempio, SOCK_STREAM). Come creato con LPWSPSocket">LPWSPSocket
PVD_CONFIG Dipendente dal provider di servizi Oggetto struttura di dati opaca del provider di servizi associato a socket s. Questo oggetto archivia le informazioni di configurazione correnti del provider di servizi. Il formato esatto di questa struttura di dati è specifico del provider di servizi. Implementazione dipendente

 

La chiamata a LPWSPGetSockOpt con un'opzione non supportata comporterà la restituzione di un codice di errore WSAENOPROTOOPT in lpErrno.

SO_DEBUG

I provider di servizi Windows Sockets sono invitati (ma non necessari) a fornire informazioni di debug di output se l'opzione SO_DEBUG è impostata da un client SPI Windows Sockets. Il meccanismo per generare le informazioni di debug e il modulo che accetta non rientrano nell'ambito di questa specifica.

SO_ERROR

L'opzione SO_ERROR restituisce e reimposta il codice di errore basato su socket , che non corrisponde necessariamente al codice di errore per thread gestito dal WS2_32.DLL. Una chiamata di Windows Sockets riuscita sul socket non reimposta il codice di errore basato su socket restituito dall'opzione SO_ERROR.

SO_GROUP_ID

Riservato. Questo valore deve essere NULL.

SO_GROUP_PRIORITY

Riservato.

SO_KEEPALIVE

Un client SPI Windows Sockets può richiedere che un provider di servizi TCP/IP consenta l'uso di pacchetti keep-alive sulle connessioni TCP attivando l'opzione socket SO_KEEPALIVE . Un provider Windows Sockets non deve supportare l'uso di keep-alive: in caso affermativo, la semantica precisa è specifica dell'implementazione, ma deve essere conforme alla sezione 4.2.3.6 di RFC 1122: Requisiti per gli host Internet - Livelli di comunicazione. Questa risorsa può essere disponibile solo in inglese. Se una connessione viene interrotta in seguito a keep-alive, il codice di errore WSAENETRESET viene restituito a tutte le chiamate in corso sul socket e tutte le chiamate successive avranno esito negativo con WSAENOTCONN .

SO_LINGER

SO_LINGER controlla l'azione eseguita quando i dati non inviati vengono accodati su un socket e viene eseguito un LPWSPCloseSocket . Per una descrizione del modo in cui le impostazioni di SO_LINGER influiscono sulla semantica di LPWSPCloseSocket, vedere LPWSPCloseSocket. Il client SPI Windows Sockets ottiene il comportamento desiderato creando una struttura LINGER (a cui punta il parametro optval ) con gli elementi seguenti:

}

SO_MAX_MSG_SIZE

Si tratta di un'opzione socket get-only, che indica le dimensioni massime di un messaggio di invio in uscita per i tipi socket orientati ai messaggi (ad esempio, SOCK_DGRAM) implementati dal provider di servizi. Non ha alcun significato per i socket orientati al flusso di byte. Non è previsto alcun provisioning per determinare la dimensione massima dei messaggi in ingresso.

SO_PROTOCOL_INFOW

Si tratta di un'opzione get-only che fornisce la struttura WSAPROTOCOL_INFO associata a questo socket. Per altre informazioni su questa struttura, vedere WSCEnumProtocols .

SO_SNDBUF

Quando un provider di servizi Windows Sockets supporta le opzioni di SO_RCVBUF e SO_SNDBUF, un client SPI Windows Sockets può usare LPWSPSetSockOpt per richiedere dimensioni del buffer diverse (maggiori o minori). La chiamata può avere esito positivo anche se il provider di servizi non ha resa disponibile l'intero importo richiesto. Un client SPI Windows Sockets deve chiamare questa funzione con la stessa opzione per controllare le dimensioni del buffer effettivamente specificate.

SO_REUSEADDR

Per impostazione predefinita, un socket non può essere associato (vedere LPWSPBind) a un indirizzo locale già in uso. In alcuni casi, tuttavia, potrebbe essere auspicabile riutilizzare un indirizzo in questo modo. Poiché ogni connessione viene identificata in modo univoco dalla combinazione di indirizzi locali e remoti, non esiste alcun problema con la presenza di due socket associati allo stesso indirizzo locale purché gli indirizzi remoti siano diversi. Per informare il provider Windows Sockets che un LPWSPBind su un socket deve essere autorizzato a eseguire l'associazione a un indirizzo locale già in uso da un altro socket, il client SPI di Windows Sockets deve impostare l'opzione socket SO_REUSEADDR per il socket prima di emettere LPWSPBind. Si noti che l'opzione viene interpretata solo al momento di LPWSPBind. Non è quindi necessario (ma innocuo) impostare l'opzione su un socket che non deve essere associato a un indirizzo esistente e impostare o reimpostare l'opzione dopo LPWSPBind non ha alcun effetto su questo o su qualsiasi altro socket.

PVD_CONFIG

Questa opzione recupera un oggetto struttura di dati opaca dal provider di servizi associato a socket s. Questo oggetto archivia le informazioni di configurazione correnti del provider di servizi. Il formato esatto di questa struttura di dati è specifico del provider di servizi.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione ws2spi.h

Vedi anche

LPWSPSetSockOpt

LPWSPSocket