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