次の方法で共有


CAsyncSocket::IOCtl

ソケット モードを制御するには、このメンバー関数を呼び出します。

BOOL IOCtl(
   long lCommand,
   DWORD* lpArgument 
);

パラメーター

  • lCommand
    ソケットで実行するコマンド。

  • lpArgument
    lCommandのパラメーターへのポインター。

戻り値

関数が正常に終了した場合は、; は 0 と特定のエラー コードは GetLastErrorを呼び出して取得できます。このエラーは、次のメンバー関数に適用されます:

  • WSANOTINITIALISED は正常に AfxSocketInit は、この API を使用する前に行う必要があります。

  • WSAENETDOWN は、Windows ソケット実装ネットワークのサブシステムが失敗したことを検出しました。

  • WSAEINVAL   lCommand は有効なコマンドでない場合、または lpArgument は lCommandの受け入れ可能なパラメーターでない場合、またはコマンドは、指定されたソケットの型に適用できません。

  • WSAEINPROGRESS A のブロックの Windows ソケット処理は進行中です。

  • WSAENOTSOCK は記述子ソケットではありません。

解説

このルーチンは任意の状態ですべてのソケットで使用できます。プロトコルのソケット、独立したサブシステムと通信に関連付けられたオペレーティング パラメーターを取得または取得するために使用します。次のコマンドはサポートされます:

  • FIONBIO は、ソケットのブロッキングのモードを有効または無効にします。DWORDの lpArgument のパラメーターの位置、ブロッキングのモードが無効になっている場合に有効なゼロであることの場合はです。AsyncSelect がソケットで、ブロッキング懸案事項のモードにソケットを戻すために IOCtl を使用しようとすると、が WSAEINVALと失敗します。ソケットをブロッキング モードに設定し直して、WSAEINVAL のエラーを回避するために、アプリケーションが 0 以下 lEvent のパラメーターの AsyncSelect の最初にを呼び出して AsyncSelect を無効にする必要があります。IOCtlとを呼び出します。

  • このFIONREAD は、ソケットの [受信] の 1 回の呼び出しで読み取ることができる最大バイト数を指定します。IOCtl の結果が格納 DWORD の lpArgument のパラメーターのポイント。この場合、ソケットで SOCK_STREAM型の場合、FIONREAD は、単一の **[受信]**読み取ることができるデータの合計を返します; これは、ソケットにキューイング データの合計に通常同じです。この場合、ソケットで SOCK_DGRAM型の場合、FIONREAD は、ソケットにキューイング最初のデータグラムのサイズを返します。

  • SIOCATMARK は、すべての帯域外のデータが読み取り専用かどうかを判定します。これは、帯域外 (データSO_OOBINLINE) のインライン表示用に構成された型 SOCK_STREAM ソケットにのみ適用されます。帯域外のデータを読み込む待機操作以外の場合はを返します。それ以外の場合は 0 を返し、ソケットで発生したか ReceiveFrom 次の [受信] マークは、「」の前にあるデータの一部またはすべてを取得します; アプリケーションはすべてのデータがあるかどうかを確認するに SIOCATMARK 操作を使用する必要があります。「緊急の」 (帯域外) データを指定する通常のデータが存在する順序で表示されます。( [受信]ReceiveFrom が、同じの帯域外と通常のデータを呼び出し、複合しません。) IOCtl の結果が格納 DWORD の lpArgument のパラメーターのポイント。

この関数は、Berkeley ソケットで使用するように ioctl() のサブセットです。特に SIOCATMARK は限られてソケット レベルのコマンドですが、FIOASYNCと同じコマンドはありません。

必要条件

Header: afxsock.h

参照

関連項目

CAsyncSocket クラス

階層図

CAsyncSocket::AsyncSelect

CAsyncSocket::Create

CAsyncSocket::GetSockOpt

CAsyncSocket::SetSockOpt