CAsyncSocket::IOCtl
BOOL IOCtl ( длинные lCommand, DWORD * lpArgument );
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае 0 и код ошибки можно получить, вызвав функцию GetLastError. Следующие ошибки применяются к этой функции-члена:
-
WSA&NOTINITIALISEDnbsp; Перед использованием этого API должно произойти успешный AfxSocketInit.
-
WSAE&NETDOWNnbsp; Реализация Windows Sockets обнаружено, что сетевая подсистема не.
-
WSAEI&NVALnbsp;lCommand не является допустимой командой или lpArgument не является приемлемым параметром для lCommandили команда не применима к типу сокета поставляется.
-
WSAEI&NPROGRESSnbsp; Блокировки Windows Sockets операция.
-
WSAE&NOTSOCKnbsp; Дескриптор не сокета.
Параметры
lCommand
Команда для выполнения на сокете.
lpArgument
Указатель на параметр для lCommand.
Примечания
Этот член функция вызывается для управления режимом объекта socket. Эта процедура может использоваться на любой розетки в любом государстве. Он используется для получения или извлечения параметров работы, связанные с объектом socket, независимо от протокола и связи подсистемы. Поддерживаются следующие команды:
-
FIO&NBIOnbsp; Включение и отключение неблокирующий режим на сокете. Параметр lpArgument указывает на значение DWORDкоторой ненулевых если неблокирующий режим должен быть включен и нуль, если оно хочет быть отключен. Если AsyncSelect была выпущена на сокете, то любая попытка использовать IOCtl для задания socket обратно в блокирующем режиме не будут с WSAEINVAL. Чтобы задать объект socket блокирующем режиме и предотвратить ошибку WSAEINVAL , приложение должно сначала отключить AsyncSelect путем вызова AsyncSelect с параметром Левент равен 0, а затем вызов IOCtl.
-
FIO&NREADnbsp; Определить максимальное количество байтов, которые могут быть прочитаны с помощью одного вызова Receive из этого объекта socket. Параметр lpArgument указывает на значение DWORD в котором IOCtl магазинах результат. Если этот сокет имеет тип SOCK_STREAM, FIONREAD возвращает общее количество данных, которые можно прочитать в одном Receive; Обычно это то же самое как общее количество данных, помещенных на сокете. Если этот сокет имеет тип SOCK_DGRAM, FIONREAD возвращает размер датаграммы в первой очереди на сокете.
-
SIOCATMARKnbsp; Определите ли читать все-диапазона данных. Это относится только к socket типа SOCK_STREAM , который был настроен для приема в линии диапазона данных (SO_OOBI&NLINE). Если данные не out-of-band для чтения, операция возвращает ненулевое значение. В противном случае он возвращает значение 0, и следующий Receive или ReceiveFrom на сокет будет извлекать все или некоторые из данных, предшествовавших "Марк"; в приложении следует использовать операцию SIOCATMARK для определения того, остается ли какие-либо данные. Если есть какие-либо обычные данные, предшествовавших «срочный» данных (out-of-band), он будет получен в порядке. (Обратите внимание, что Receive или ReceiveFrom никогда не смешиваются в то же слово out-of-band и обычных данных). Параметр lpArgument указывает на значение DWORD в котором IOCtl магазинах результат.
Эта функция является подмножеством ioctl() , используемые в Сокеты Беркли. В частности нет команды что эквивалентно FIOASYNC, в то время как SIOCATMARK является команда только на уровне сокетов, которая поддерживается.
Обзор CAsyncSocket |nbsp; Члены класса | Иерархическая схема
См. также CAsyncSocket::AsyncSelect, CAsyncSocket::Create, CAsyncSocket::GetSockOpt, CAsyncSocket::SetSockOpt