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 |
---|---|
Il sottosistema di rete non è riuscito. | |
Uno dei parametri optval o optlen non è una parte valida dello spazio degli indirizzi utente o il parametro optlen è troppo piccolo. | |
Il livello è sconosciuto o non valido. | |
La funzione viene richiamata quando un callback è in corso. | |
L'opzione è sconosciuta o non supportata dalla famiglia di protocolli indicata. | |
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.
-
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