CAsyncSocket::GetSockOpt
Chiamare la funzione membro per recuperare un'opzione di socket.
BOOL GetSockOpt(
int nOptionName,
void* lpOptionValue,
int* lpOptionLen,
int nLevel = SOL_SOCKET
);
Parametri
nOptionName
L'opzione di socket per il quale il valore deve essere recuperata.lpOptionValue
Un puntatore a un buffer in cui il valore per l'opzione richiesta deve essere restituito.Il valore associato all'opzione selezionata viene restituito nel buffer lpOptionValue.L'integer puntato da lpOptionLen originariamente deve contenere la dimensione del buffer in byte, e restituiscono, verrà impostato sulla dimensione del valore restituito.Per SO_LINGER, questa verrà la dimensione di una struttura LINGER ; per le altre opzioni sarà la dimensione BOOL o int, come l'opzione.Vedere l'elenco delle opzioni e delle relative dimensioni nella sezione relativa alle osservazioni.lpOptionLen
Puntatore alla dimensione lpOptionValue memorizza nel buffer in byte.nLevel
Il livello in cui viene definita l'opzione, gli unici livelli sono supportati SOL_SOCKET e IPPROTO_TCP.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario 0 e un codice di errore specifico possono essere recuperati chiamando GetLastError.Se un'opzione non è stata impostata mai con SetSockOpt, quindi GetSockOpt restituisce il valore predefinito per l'opzione.Gli errori seguenti si applicano a questa funzione membro:
WSANOTINITIALISED Al AfxSocketInit deve verificarsi prima di utilizzare questa API.
WSAENETDOWN che l'implementazione di Windows Sockets ha rilevato che il sottosistema di rete non è riuscita.
WSAEFAULT l'argomento lpOptionLen non è valido.
WSAEINPROGRESS che blocca l'operazione di Windows Sockets è in corso.
WSAENOPROTOOPT l'opzione è sconosciuto o non supportato.In particolare, SO_BROADCAST non è supportato su socket di tipo SOCK_STREAM, mentre SO_ACCEPTCONN, SO_DONTLINGER, SO_KEEPALIVE, SO_LINGERe SO_OOBINLINE non sono supportati sui socket di tipo SOCK_DGRAM.
WSAENOTSOCK il descrittore non è un socket.
Note
GetSockOpt recupera il valore corrente di un'opzione di socket associata a un socket di qualsiasi tipo, nello stato e archivia il risultato in lpOptionValue.Operazioni di socket effetti di opzioni, come il routing dei pacchetti, trasferimento di dati fuori banda, e così via.
Le opzioni seguenti sono supportate per GetSockOpt.Il tipo identifica il tipo di dati indirizzati da lpOptionValue.L'opzione TCP_NODELAY utilizza IPPROTO_TCPlivello, le altre opzioni utilizzano SOL_SOCKETlivello.
Valore |
Type |
Significato |
---|---|---|
SO_ACCEPTCONN |
BOOL |
Il socket ascoltano. |
SO_BROADCAST |
BOOL |
Il socket viene configurato per la trasmissione dei messaggi trasmessi. |
SO_DEBUG |
BOOL |
Il debug è abilitato. |
SO_DONTLINGER |
BOOL |
Se true, l'opzione SO_LINGER è disabilitata. |
SO_DONTROUTE |
BOOL |
Il routing è disabilitato. |
SO_ERROR |
int |
Recuperare lo stato di errore e deselezionare. |
SO_KEEPALIVE |
BOOL |
Mantenere - alives viene inviata. |
SO_LINGER |
la struttura INDUGIA |
Restituisce l'oggetto corrente indugiano opzioni. |
SO_OOBINLINE |
BOOL |
I dati fuori banda vengono ricevendi nel flusso di dati normale. |
SO_RCVBUF |
int |
Le dimensioni del buffer per ricevono. |
SO_REUSEADDR |
BOOL |
Il socket può essere associato a un indirizzo già utilizzato. |
SO_SNDBUF |
int |
Le dimensioni del buffer per inviare. |
SO_TYPE |
int |
Il tipo di socket, ad esempio SOCK_STREAM). |
TCP_NODELAY |
BOOL |
Disabilita l'algoritmo Nagle di unione dei pacchetti in invio. |
Le opzioni (BSD) di Berkeley Software Distribution di supporto per GetSockOpt sono:
Valore |
Type |
Significato |
---|---|---|
SO_RCVLOWAT |
int |
Ricevere il limite minimo. |
SO_RCVTIMEO |
int |
Intervallo di ricezione. |
SO_SNDLOWAT |
int |
Inviare il limite minimo. |
SO_SNDTIMEO |
int |
Inviare l'intervallo. |
IP_OPTIONS |
|
Ottiene le opzioni di intestazione IP. |
TCP_MAXSEG |
int |
Ottenere un oggetto TCP la dimensione massima del segmento. |
Chiamare GetSockOpt con un'opzione non supportata deriverà in un codice di errore WSAENOPROTOOPT restituito da GetLastError.
Requisiti
Header: afxsock.h