CAsyncSocket::GetSockOpt

更新 : 2007 年 11 月

ソケット オプションを取得します。

BOOL GetSockOpt(
   int nOptionName,
   void* lpOptionValue,
   int* lpOptionLen,
   int nLevel = SOL_SOCKET 
);

パラメータ

  • nOptionName
    値を取得するソケットのオプション。

  • lpOptionValue
    指定したオプション値が返されるバッファへのポインタ。選択されたオプションに関連付けられた値が lpOptionValue で指すバッファに返されます。lpOptionLen が指す整数型の変数には、バッファのサイズをバイト単位で指定しておきます。関数から戻るときに、返された値のサイズが設定されます。SO_LINGER オプションでは、LINGER 構造体のサイズになります。その他のオプションでは、BOOL 型または int 型のサイズになります。どちらになるかはオプションによって異なります。オプションの一覧と、そのサイズについては「解説」を参照してください。

  • lpOptionLen
    lpOptionValue バッファのバイト単位のサイズへのポインタ。

  • nLevel
    オプションが定義されるレベル。サポートされるレベルは SOL_SOCKETIPPROTO_TCP だけです。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。GetLastError を呼び出すと、固有のエラー コードを取得できます。SetSockOpt を使ってオプションが設定されていない場合は、GetSockOpt はオプションの既定値を返します。このメンバ関数では、次のエラーが発生します。

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

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

  • WSAEFAULT   引数 lpOptionLen が無効です。

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

  • WSAENOPROTOOPT   オプションが無効またはサポートされていません。特に SO_BROADCASTSOCK_STREAM 型のソケットではサポートされていません。また SO_ACCEPTCONNSO_DONTLINGERSO_KEEPALIVESO_LINGER、および SO_OOBINLINESOCK_DGRAM 型のソケットではサポートされていません。

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

解説

GetSockOpt は、ソケットに関連付けられているソケット オプションの現在値を取得します。ソケットの型やソケットの状態は問いません。取得した値を lpOptionValue に格納します。オプションは、パケットのルーティング、帯域外のデータ転送など、ソケットの操作に影響します。

GetSockOpt では、次のオプションをサポートしています。型は、lpOptionValue によってアドレスが指定されるデータの型を示します。TCP_NODELAY オプションはレベル IPPROTO_TCP を使用し、その他のオプションはすべてレベル SOL_SOCKET を使用します。

説明

SO_ACCEPTCONN

BOOL

ソケットはリスナです。

SO_BROADCAST

BOOL

ソケットは、ブロードキャスト メッセージの転送用に構成されます。

SO_DEBUG

BOOL

デバッグを有効にします。

SO_DONTLINGER

BOOL

True のときは、SO_LINGER オプションは無効になります。

SO_DONTROUTE

BOOL

ルーティングを無効にします。

SO_ERROR

int

エラー状態を取得し、クリアします。

SO_KEEPALIVE

BOOL

接続保持パケットが送信されます。

SO_LINGER

struct LINGER

現在のリンガ オプションを返します。

SO_OOBINLINE

BOOL

通常のデータ ストリームで、帯域外データを受信します。

SO_RCVBUF

int

受信用のバッファ サイズです。

SO_REUSEADDR

BOOL

ソケットは、既に使われているアドレスにバインドできます。

SO_SNDBUF

int

送信用のバッファ サイズです。

SO_TYPE

int

ソケットの型 (例 SOCK_STREAM)。

TCP_NODELAY

BOOL

送信データをまとめて送るための Nagle アルゴリズムを無効にします。

次の BSD (Berkeley Software Distribution) オプションは GetSockOpt ではサポートしません。

説明

SO_RCVLOWAT

int

低水位マークを受信します。

SO_RCVTIMEO

int

タイムアウトを受信します。

SO_SNDLOWAT

int

低水位マークを送信します。

SO_SNDTIMEO

int

タイムアウトを送信します。

IP_OPTIONS

 

IP ヘッダーにあるオプションを取得します。

TCP_MAXSEG

int

TCP 最大セグメント サイズを取得します。

サポートしていないオプションを指定して GetSockOpt を呼び出すと、エラーになります。GetLastError はエラー コード WSAENOPROTOOPT を返します。

必要条件

ヘッダー : afxsock.h

参照

参照

CAsyncSocket クラス

階層図

CAsyncSocket::SetSockOpt

その他の技術情報

CAsyncSocket のメンバ