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_STREAMFIONREAD 返回可沿单个 Receive数据的总量;这通常是不同于"套接字排队的数据的总量。 如果此套接字是类型 SOCK_DGRAMFIONREAD 返回在套接字排队的第一个数据进行的大小。

  • SIOCATMARK 确定所有带外数据是否已阅读。 这仅适用于所有带外数据配置了类型 SOCK_STREAM 的套接字(SO_OOBINLINE)的内联接收。 如果带外数据不等待,读取操作返回非零。 否则返回0,因此,在套接字或 ReceiveFrom 执行的下一 Receive 将检索前面放置一个“标记”部分或全部数据;应用程序应使用 SIOCATMARK 操作确定任何数据是否仍然存在。 如果具有前面“紧急” (带外)数据的任何常规数据,它按顺序接收。 ( ReceiveReceiveFrom 不会组合中的带外和普通数据的说明同一调用。)lpArgument 参数点。IOCtl 存储结果的 DWORD

此函数是 ioctl() 的子集在Berkeley套接字。 具体而言,与 FIOASYNC等效,命令,而 SIOCATMARK 是唯一受支持的存储级命令。

要求

Header: afxsock.h

请参见

参考

CAsyncSocket选件类

层次结构图

CAsyncSocket::AsyncSelect

CAsyncSocket::Create

CAsyncSocket::GetSockOpt

CAsyncSocket::SetSockOpt