次の方法で共有


CAsyncSocket::IOCtl

更新 : 2007 年 11 月

ソケットのモードを制御します。

BOOL IOCtl(
   long lCommand,
   DWORD* lpArgument 
);

パラメータ

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

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

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。GetLastError を呼び出すと、固有のエラー コードを取得できます。このメンバ関数では、次のエラーが発生します。

  • WSANOTINITIALISED   この API を使う前に AfxSocketInit の呼び出しが正常終了していることが必要です。

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

  • WSAEINVAL   lCommand コマンドが無効か、lpArgument に lCommand のコマンドに適切ではないパラメータを指定しています。あるいは、コマンドが、指定したソケットの型に対して適切ではありません。

  • WSAEINPROGRESS   実行中の Windows ソケット呼び出しがブロッキングされています。

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

解説

このルーチンは、どのような状態でもすべてのソケットに使うことができます。この関数を使って、ソケットに関連する操作パラメータを取得します。プロトコルや通信サブシステムとは無関係です。次のコマンドがサポートされています。

  • FIONBIO   ソケットの非ブロッキング モードを有効または無効にします。パラメータ lpArgument は DWORD 型へのポインタで、非ブロッキング モードを有効にするときは 0 以外、無効にするときは 0 にします。ソケットに対して AsyncSelect が発行されているときに、ソケットをブロッキング モードにする IOCtl を使用すると WSAEINVAL エラーになります。WSAEINVAL エラーにならずに、ソケットをブロッキング モードに戻すには、アプリケーションからパラメータ lEvent を 0 にして AsyncSelect を呼び出し AsyncSelect を無効にした後、IOCtl を呼び出します。

  • FIONREAD   1 回の Receive の呼び出しでソケットから読み込める最大バイト数を判断します。パラメータ lpArgument は DWORD 型のポインタで、IOCtl はこの変数に結果を格納します。ソケットが SOCK_STREAM 型のときは、FIONREAD は 1 回の Receive で読み込めるデータの総量を返します。データの総量は、通常ソケットにキューイングされているデータの総量と同じです。ソケットが SOCK_DGRAM 型のときは、FIONREAD はソケットにキューイングされている最初のデータグラムのサイズを返します。

  • SIOCATMARK   すべての帯域外データが読み込まれたかどうかを判断します。これは、帯域外のデータをインライン受信するように構成されている (SO_OOBINLINE) SOCK_STREAM 型のソケットのみに有効です。読み込みを待っている帯域外のデータがないときは、0 以外を返します。それ以外は 0 を返し、次にソケットで Receive または ReceiveFrom を実行すると "マーク" の前のデータの一部またはすべてを取得します。つまり、データが残っているかどうかをアプリケーションで判断するには SIOCATMARK 操作を使います。"緊急" (帯域外) データの前に通常のデータがあるときは、順番に受信されます。Receive または ReceiveFrom の 1 回の呼び出しで、帯域外のデータと通常のデータが混在して受信されることはありません。パラメータ lpArgument は DWORD 型のポインタで、IOCtl はこの変数に結果を格納します。

この関数は Berkeley ソケットで使われている ioctl() のサブセットです。FIOASYNC と同等のコマンドはありません。また、ソケット レベルのコマンドは SIOCATMARK がサポートされているだけです。

必要条件

ヘッダー : afxsock.h

参照

参照

CAsyncSocket クラス

階層図

CAsyncSocket::AsyncSelect

CAsyncSocket::Create

CAsyncSocket::GetSockOpt

CAsyncSocket::SetSockOpt

その他の技術情報

CAsyncSocket のメンバ