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_SOCKET と IPPROTO_TCP だけです。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。GetLastError を呼び出すと、固有のエラー コードを取得できます。SetSockOpt を使ってオプションが設定されていない場合は、GetSockOpt はオプションの既定値を返します。このメンバ関数では、次のエラーが発生します。
WSANOTINITIALISED この API を使う前に AfxSocketInit の呼び出しが正常終了していることが必要です。
WSAENETDOWN Windows ソケットの実装が、ネットワーク サブシステムの異常を検出しました。
WSAEFAULT 引数 lpOptionLen が無効です。
WSAEINPROGRESS 実行中の Windows ソケット呼び出しがブロッキングされています。
WSAENOPROTOOPT オプションが無効またはサポートされていません。特に SO_BROADCAST は SOCK_STREAM 型のソケットではサポートされていません。また SO_ACCEPTCONN、SO_DONTLINGER、SO_KEEPALIVE、SO_LINGER、および SO_OOBINLINE は SOCK_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