CAsyncSocket::IOCtl
调用该成员函数的控件套接字的模式。
BOOL IOCtl(
long lCommand,
DWORD* lpArgument
);
参数
lCommand
命令对套接字。lpArgument
对一个参数的指针的 lCommand。
返回值
非零,如果函数运行成功;否则0和特定错误代码可以通过调用 GetLastError检索。 下面的错误适用于此成员函数:
WSANOTINITIALISED 的成功的 AfxSocketInit 必须在使用此API之前发生。
WSAENETDOWN Windows套接字实现检测网络子系统失败。
WSAEINVAL lCommand 不是有效的命令,或者 lpArgument 不是 lCommand的一个接受参数,或者命令不适用于所提供的套接字的类型。
块Windows套接字操作的WSAEINPROGRESS 的进度中。
WSAENOTSOCK 描述符不是套接字。
备注
此实例在所有套接字可以在任意状态。 它用于获取或检索使用参数与协议的套接字、独立应用程序和子系统通信。 下面的命令支持:
FIONBIO 启动或禁用了套接字的非阻塞模式。 lpArgument 参数点。DWORD,不为零,如果非阻塞模式将启动和零,则它将被禁用。 如果 AsyncSelect 在套接字问题,则所有尝试使用 IOCtl 将套接字到块模式将失败。WSAEINVAL。 若要将套接字到块模式并防止 WSAEINVAL 错误,应用程序必须通过调用与 lEvent 参数的 AsyncSelect 首先禁用 AsyncSelect 等于0,然后调用 IOCtl。
FIONREAD 确定可读取的一 Receive 从此套接字调用的最大字节数。 lpArgument 参数点。IOCtl 存储结果的 DWORD。 如果此套接字是类型 SOCK_STREAM,FIONREAD 返回可沿单个 Receive数据的总量;这通常是不同于"套接字排队的数据的总量。 如果此套接字是类型 SOCK_DGRAM,FIONREAD 返回在套接字排队的第一个数据进行的大小。
SIOCATMARK 确定所有带外数据是否已阅读。 这仅适用于所有带外数据配置了类型 SOCK_STREAM 的套接字(SO_OOBINLINE)的内联接收。 如果带外数据不等待,读取操作返回非零。 否则返回0,因此,在套接字或 ReceiveFrom 执行的下一 Receive 将检索前面放置一个“标记”部分或全部数据;应用程序应使用 SIOCATMARK 操作确定任何数据是否仍然存在。 如果具有前面“紧急” (带外)数据的任何常规数据,它按顺序接收。 ( Receive 或 ReceiveFrom 不会组合中的带外和普通数据的说明同一调用。)lpArgument 参数点。IOCtl 存储结果的 DWORD。
此函数是 ioctl() 的子集在Berkeley套接字。 具体而言,与 FIOASYNC等效,命令,而 SIOCATMARK 是唯一受支持的存储级命令。
要求
Header: afxsock.h