CAsyncSocket::GetSockOpt
ソケット オプションを取得します。
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