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 CAsyncSocket

Grafico delle gerarchie

CAsyncSocket::AsyncSelect

CAsyncSocket::Create

CAsyncSocket::GetSockOpt

CAsyncSocket::SetSockOpt