CAsyncSocket::IOCtl
BOOLIOCtl (lungalpArgumentdilCommand,DWORD *);
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario 0 e un codice di errore specifico può essere recuperato chiamando GetLastError. I seguenti errori si applicano a questa funzione membro:
-
WSA&NOTINITIALISEDnbsp; Un successo AfxSocketInit deve avvenire prima di utilizzare questa API.
-
WSAE&NETDOWNnbsp; L'implementazione di Windows Sockets rilevato che non è riuscito il sottosistema di rete.
-
WSAEI&NVALnbsp;lCommand non è un comando valido, lpArgument non è un parametro accettabile per lCommando il comando non è applicabile al tipo di socket in dotazione.
-
WSAEI&NPROGRESSnbsp; Un'operazione di blocco Windows Sockets è in corso.
-
WSAE&NOTSOCKnbsp; Il descrittore non è una presa di corrente.
Parametri
lCommand
Il comando per eseguire sul socket.
lpArgument
Puntatore a un parametro per lCommand.
Osservazioni
Chiamare questa funzione membro per controllare la modalità di un socket. Questa routine può essere utilizzata su qualsiasi presa di corrente in qualsiasi stato. Essa viene utilizzata per ottenere o recuperare i parametri operativi connessi con lo zoccolo, indipendente del sottosistema protocollo e le comunicazioni. Sono supportati i seguenti comandi:
-
FIO&NBIOnbsp; Attivare o disattivare la modalità non bloccante sul socket. Il parametro lpArgument punta a un DWORD, che è diverso da zero se non bloccante modalità deve essere abilitato e zero se si vuole essere disabilitato. Se AsyncSelect è stato rilasciato su un socket, qualsiasi tentativo di utilizzare IOCtl per impostare il socket tornare alla modalità di blocco riuscirà con WSAEINVAL. Per impostare il socket tornare alla modalità di blocco e prevenire l'errore WSAEINVAL , un'applicazione prima necessario disabilitare AsyncSelect dal chiamante AsyncSelect con il parametro lEvent uguale a 0, quindi chiamare IOCtl.
-
FIO&NREADnbsp; Determinare il numero massimo di byte che può essere letto con una ricezione chiamata da questa presa. I punti di parametro lpArgument in un DWORD in cui IOCtl memorizza il risultato. Se questa presa è di tipo SOCK_STREAM, FIONREAD restituisce la quantità totale di dati che possono essere lette in una sola ricezione; Questo è normalmente lo stesso come la quantità totale di dati in coda sul socket. Se questa presa è di tipo SOCK_DGRAM, FIONREAD restituisce che la dimensione del datagramma prima in coda sul socket.
-
SIOCATMARKnbsp; Per determinare se è stata letta tutti i dati fuori banda. Questo vale solo per un socket di tipo SOCK_STREAM , che è stato configurato per la ricezione in linea di dati fuori banda (SO_OOBI&NLINE). Se nessun dato out-of-band è in attesa di essere letto, l'operazione restituisce diverso da zero. In caso contrario restituisce 0, e la successiva ricezione o ReceiveFrom eseguita sul socket recupererà alcuni o tutti i dati che precede il "marchio"; l'applicazione deve utilizzare l'operazione di SIOCATMARK per determinare se eventuali dati rimangono. Se c'è qualsiasi normale dato che precede i dati (out-of-band) "urgenti", verranno ricevuto in ordine. (Si noti che una ricezione o ReceiveFrom mai mescolare dati out-of-band e normali nella stessa chiamata). I punti di parametro lpArgument in un DWORD in cui IOCtl memorizza il risultato.
Questa funzione è un sottoinsieme di IOCTL come nel socket di Berkeley. In particolare, non non c'è nessun comando che equivale a FIOASYNC, mentre SIOCATMARK è il comando solo a livello di socket che è supportato.
CAsyncSocket panoramica |nbsp; Membri della classe | Gerarchia Chart
Vedere a&nchenbsp;CAsyncSocket::AsyncSelect, CAsyncSocket::Create, CAsyncSocket::GetSockOpt, CAsyncSocket::SetSockOpt