Поделиться через


CAsyncSocket::IOCtl

Эта функция-член вызывается с целью наблюдения режим сокета.

BOOL IOCtl( 
   long lCommand, 
   DWORD* lpArgument  
);

Параметры

  • lCommand
    Команда для выполнения на сокете.

  • lpArgument
    Указатель на параметр для lCommand.

Возвращаемое значение

Ненулевой если функция успешно; в противном случае – значение 0, а конкретный код ошибки могут быть восстановлены путем вызова GetLastError. Об ошибке применяемых к данному функции-члену.

  • WSANOTINITIALISED А успешное AfxSocketInit должно произойти перед использованием этого API.

  • Реализация Windows WSAENETDOWN sockets обнаружила, что подсистема сети.

  • WSAEINVAL   lCommand не является допустимой команды или lpArgument не допустимый для параметра lCommand или команда не применимо с предоставленным типом сокета.

  • WSAEINPROGRESS А операция блокировки Windows sockets выполняется.

  • Не WSAENOTSOCK дескриптор сокета.

Заметки

Эту процедуру можно использовать в любом сокете в любом состоянии. Она используется для получения или восстановить параметры operating, связанные с гнездом, независимым протокола и подсистемой связи. Поддерживаются следующие команды:

  • FIONBIO Включение или отключение nonblocking режим для сокета. Элементы параметра lpArgument на DWORD, который отличен от нуля, если nonblocking режим быть включен и нуль, если его блокировки. Если было выдано AsyncSelect на сокете, то любые попытки использовать IOCtl для задания сокет обратно в режим WSAEINVAL отключить завершится с ошибкой. Чтобы установить сокет обратно в режим блокировки и ошибка WSAEINVAL приложение должно AsyncSelect сначала отключить путем вызова AsyncSelect с параметром lEvent, равным 0, а затем вызывает IOCtl.

  • FIONREAD Задает максимальное число байтов, которые можно считать с одним вызовом Получить из этого сокета. Элементы параметра lpArgument на DWORD, в котором IOCtl сохраняет результат. Если этот сокет типа SOCK_STREAM, то FIONREAD возвращает общее количество данных, которое может быть считано в одном Получить; это обычно совпадает с общее количество данных в очереди на сокете. Если этот сокет типа SOCK_DGRAM, то FIONREAD возвращает размер первой датаграммы из очереди для сокета.

  • Определяет, является ли SIOCATMARK считаны все экстренные данные. Это применяется только к гнезду типа SOCK_STREAM, который был настроен для приема одного из встроенных внеполосных данных (SO_OOBINLINE). Если экстренные данные не ожидающих чтения, то операция возвращает ненулевое значение. В противном случае возвращается 0 и ниже Получить или ReceiveFrom, выполняемые на сокете получают некоторые или все данные перед "метки"; приложение должно использовать операцию SIOCATMARK для определения остаются ли какие-либо данные. Если какие-либо обычные данные перед "срочные" (экстренные) данные, они будут получены. (Обратите внимание, Получить или ReceiveFrom никогда не будут смешение по внештатному каналу и обычные данные в этих же вызов). Элементы параметра lpArgument на DWORD, в котором IOCtl сохраняет результат.

Эта функция является подмножеством ioctl(), как используется в гнездами Беркли. В частности, команда, которая эквивалентна FIOASYNC, пока SIOCATMARK единственная команда гнездо- уровня, которая поддерживается.

Требования

Header: afxsock.h

См. также

Ссылки

Класс CAsyncSocket

Диаграмма иерархии

CAsyncSocket::AsyncSelect

CAsyncSocket::Create

CAsyncSocket::GetSockOpt

CAsyncSocket::SetSockOpt