Condividi tramite


CAsyncSocket::IOCtl

Chiamare la funzione membro per controllare la modalità di un socket.

BOOL IOCtl(
   long lCommand,
   DWORD* lpArgument 
);

Parametri

  • lCommand
    Il comando da eseguire su socket.

  • lpArgument
    Un puntatore a un parametro per lCommand.

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.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.

  • WSAEINVAL   lCommand non è un comando valido, o lpArgument non è un parametro accettabile per lCommand, o il comando non è applicabile al tipo di socket fornito.

  • WSAEINPROGRESS che blocca l'operazione di Windows Sockets è in corso.

  • WSAENOTSOCK il descrittore non è un socket.

Note

Questa procedura può essere utilizzata in un socket in uno stato.Viene utilizzata per ottenere o recuperare i parametri di esercizio associati a un socket, indipendente dal protocollo e il sottosistema di comunicazione.I seguenti controlli sono supportati:

  • FIONBIO abilita o disabilita la modalità non bloccante su socket.I punti lpArgument a DWORD, che è diverso da zero se la modalità non bloccante è possibile attivare e zero se deve essere disabilitata.Se AsyncSelect è stato pubblicato in un socket, il IOCtl utilizzare per impostare un socket alla modalità di blocco non riuscirà a WSAEINVAL.Per impostare un socket alla modalità di blocco e per impedire l'errore WSAEINVAL, un'applicazione deve innanzitutto disabilitare AsyncSelect chiamando AsyncSelect con il parametro lEvent uguale a 0, quindi chiama IOCtl.

  • FIONREAD determina il numero massimo di byte che possono essere letti a una chiamata Ricezione da questo socket.I punti lpArgument a DWORD in cui IOCtl archivia il risultato.Se questo socket è di tipo SOCK_STREAM, FIONREAD restituisce la quantità totale di dati che possono essere letti in un singolo Ricezione; generalmente corrisponde alla quantità totale di dati in coda su socket.Se questo socket è di tipo SOCK_DGRAM, FIONREAD restituisce le dimensioni del primo datagram accodata su socket.

  • SIOCATMARK determina se tutti i dati fuori banda letti.Si applica solo a un socket di tipo SOCK_STREAM configurato per ricevere inline di tutti i dati fuori banda (SO_OOBINLINE).Se nessun dati fuori banda è in attesa di essere letto, l'operazione restituisce diverso da zero.In caso contrario restituisce 0 e Ricezione successivo o ReceiveFrom eseguito su socket recupererà alcuni o tutti i dati che precede il "flag"; l'applicazione deve utilizzare l'operazione SIOCATMARK per determinare se i dati rimangano.Se esistono di dati standard che precedono i dati (fuori banda) "urgenti", verranno ricevuti in ordine.Notare che Ricezione o ReceiveFrom mai combinerà i dati fuori banda normali nella stessa chiamata.) I punti lpArgument a DWORD in cui IOCtl archivia il risultato.

Questa funzione è un sottoinsieme ioctl() utilizzati nei socket di Berkeley.In particolare, non esiste alcun comando che equivale a FIOASYNC, mentre SIOCATMARK è l'unico di comando livello di socket supportato.

Requisiti

Header: afxsock.h

Vedere anche

Riferimenti

Classe di CAsyncSocket

Grafico della gerarchia

CAsyncSocket::AsyncSelect

CAsyncSocket::Create

CAsyncSocket::GetSockOpt

CAsyncSocket::SetSockOpt