SOL_SOCKET ソケット オプション

次の表では 、ソケット オプションSOL_SOCKET 説明します。 ソケット オプションの取得と設定の詳細については、getsockopt 関数および setsockopt 関数のリファレンス ページを参照してください。

プロトコルを列挙し、インストールされている各プロトコルでサポートされているプロパティを検出するには、WSAEnumProtocols 関数、 WSCEnumProtocols 関数、または WSCEnumProtocols32 関数を使用します。

一部のソケット オプションについては、この表の内容以上の説明が必要です。その場合は、追加ページへのリンクが含まれています。

Note

すべての SOL_SOCKET ソケット オプションは、IPv4 と IPv6 に等しく適用されます (ブロードキャストは IPv6 で実装されていないため、SO_BROADCASTを除く)。

 

SOL_SOCKET ソケット オプション

Option 取得 設定 Optval 型 Description
PVD_CONFIG yes yes char [] サービス プロバイダーの構成情報を含む不透明なデータ構造オブジェクト。 このオプションは実装に依存します。
SO_ACCEPTCONN yes DWORD (ブール値) ソケットがリッスン モードであるかどうかを返します。 このオプションは、接続指向プロトコルでのみ有効です。
SO_BROADCAST yes yes DWORD (ブール値) ブロードキャスト データを送信するためのソケットを構成します。 このオプションは、ブロードキャスト (IPX や UDP など) をサポートするプロトコルでのみ有効です。
SO_BSP_STATE yes CSADDR_INFO ローカル アドレス、ローカル ポート、リモート アドレス、リモート ポート、ソケットの種類、ソケットによって使用されるプロトコルを返します。 詳細については、 SO_BSP_STATE リファレンスを参照してください。
SO_CONDITIONAL_ACCEPT yes yes DWORD (ブール値) 着信接続が、プロトコル スタックではなく、アプリケーションによって受け入れられるか拒否されるかを示します。 詳細については、 SO_CONDITIONAL_ACCEPT リファレンスを参照してください。
SO_CONNDATA yes yes char [] 通常のネットワーク データ ストリームではなく、接続を確立するためにネットワーク要求と共に送信される追加データ。 このオプションは、DECNet、OSI TP4 などのレガシ プロトコルで使用されます。 このオプションは、Windowsの TCP/IP プロトコルではサポートされていません。
SO_CONNDATALEN yes ダブルワード 接続を確立するためにネットワーク要求と共に送信される、通常のネットワーク データ ストリーム内ではなく、追加データの長さ (バイト単位)。 このオプションは、DECNet、OSI TP4 などのレガシ プロトコルで使用されます。 このオプションは、Windowsの TCP/IP プロトコルではサポートされていません。
SO_CONNECT_TIME yes ダブルワード ソケットが接続された秒数を返します。 このオプションは、接続指向プロトコルでのみ有効です。
SO_CONNOPT yes yes char [] 通常のネットワーク データ ストリームではなく、接続を確立するためにネットワーク要求と共に送信される追加の接続オプション データ。 このオプションは、DECNet、OSI TP4 などのレガシ プロトコルで使用されます。 このオプションは、Windowsの TCP/IP プロトコルではサポートされていません。
SO_CONNOPTLEN yes ダブルワード 接続を確立するためにネットワーク要求と共に送信される、通常のネットワーク データ ストリーム内ではなく、接続オプション データの長さ (バイト単位)。 このオプションは、DECNet、OSI TP4 などのレガシ プロトコルで使用されます。 このオプションは、Windowsの TCP/IP プロトコルではサポートされていません。
SO_DISCDATA yes yes char [] 通常のネットワーク データ ストリームではなく、接続を切断するためのネットワーク要求と共に送信される追加データ。 このオプションは、DECNet、OSI TP4 などのレガシ プロトコルで使用されます。 このオプションは、Windowsの TCP/IP プロトコルではサポートされていません。
SO_DISCDATALEN yes ダブルワード 接続を切断するためのネットワーク要求と共に送信される、通常のネットワーク データ ストリーム内ではなく、追加データの長さ (バイト単位)。 このオプションは、DECNet、OSI TP4 などのレガシ プロトコルで使用されます。 このオプションは、Windowsの TCP/IP プロトコルではサポートされていません。
SO_DISCOPT yes yes char [] 通常のネットワーク データ ストリームではなく、接続を切断するためのネットワーク要求と共に送信される追加の切断オプション データ。 このオプションは、DECNet、OSI TP4 などのレガシ プロトコルで使用されます。 このオプションは、Windowsの TCP/IP プロトコルではサポートされていません。
SO_DISCOPTLEN yes ダブルワード 接続を切断するためのネットワーク要求と共に送信される、通常のネットワーク データ ストリームではなく、追加の切断オプション データの長さ (バイト単位)。 このオプションは、DECNet、OSI TP4 などのレガシ プロトコルで使用されます。 このオプションは、Windowsの TCP/IP プロトコルではサポートされていません。
SO_DEBUG yes yes DWORD (ブール値) デバッグ出力を有効にします。 現在、Microsoft プロバイダーはデバッグ情報を出力しません。
SO_DONTLINGER yes yes DWORD (ブール値) ソケットに関連付けられた残留構造のl_onoff メンバーの状態を示します。 このメンバーが 0 以外の場合、キューに格納されたデータの送信を有効にする closesocket 関数呼び出しの後、ソケットは指定された時間開いたままです。 このオプションは、信頼性の高い接続指向プロトコルでのみ有効です。
SO_DONTROUTE yes yes DWORD (ブール値) 他のインターフェイスでルーティングされるのではなく、ソケットがバインドされているインターフェイスで送信データを送信する必要があることを示します。 このオプションは、メッセージ指向プロトコルでのみ有効です。 Microsoftプロバイダーはこのオプションを無視し、常にルーティング テーブルを参照して適切な送信インターフェイスを見つけます。
SO_ERROR yes ダブルワード このソケットの最後のエラー コードを返します。 このソケットごとのエラー コードは、常にすぐに設定されるとは限りません。
SO_EXCLUSIVEADDRUSE yes yes DWORD (ブール値) 他のソケットが同じアドレスとポートにバインドされないようにします。 バインド関数を呼び出す前に、このオプションを設定する必要があります。 詳細については、 SO_EXCLUSIVEADDRUSE リファレンスを参照してください。
SO_GROUP_ID yes int (符号なし) このソケット オプションは予約されているため、使用しないでください。
SO_GROUP_PRIORITY yes yes int このソケット オプションは予約されているため、使用しないでください。
SO_KEEPALIVE yes yes DWORD (ブール値) ソケット接続のキープアライブを有効にします。 キープアライブ (接続指向プロトコル) の概念をサポートするプロトコルに対してのみ有効です。 TCP の場合、既定のキープアライブ タイムアウトは 2 時間、キープアライブ間隔は 1 秒です。 キープアライブ プローブの既定の数は、Windowsのバージョンによって異なります。 詳細については、 SO_KEEPALIVE リファレンスを参照してください。
SO_LINGER yes yes 構造体の残留 ソケットに関連付けられている 残留 構造の状態を示します。 残留構造のl_onoffメンバーが 0 以外の場合、キューに格納されたデータの送信を有効にする closesocket 関数呼び出しの後、ソケットは指定された時間開いたままです。 開いたままにする時間 (秒単位) は、残留構造のl_lingerメンバーで指定されます。 このオプションは、信頼性の高い接続指向プロトコルでのみ有効です。
SO_MAX_MSG_SIZE yes ダブルワード プロトコルでサポートされているメッセージ指向ソケットの最大送信メッセージ サイズを返します。 ストリーム指向ソケットには意味がありません。
SO_MAXDG yes ダブルワード プロトコルでサポートされている送信データグラムの最大サイズ (バイト単位) を返します。 このソケット オプションは、ストリーム指向ソケットには意味がありません。
SO_MAXPATHDG yes ダブルワード プロトコルでサポートされている特定の宛先アドレスへの送信データグラムの最大サイズ (バイト単位) を返します。 このソケット オプションは、ストリーム指向ソケットには意味がありません。 Microsoftプロバイダーは、これをSO_MAXDGとしてサイレントモードで扱う場合があります。
SO_OOBINLINE yes yes DWORD (ブール値) バインドされていないデータを通常のデータと一緒にインラインで返す必要があることを示します。 このオプションは、帯域外データをサポートする接続指向プロトコルでのみ有効です。
SO_OPENTYPE yes yes ダブルワード 設定すると、作成される後続のソケットが重複しないかどうかに影響します。 このオプションで使用できる値は、SO_SYNCHRONOUS_ALERTとSO_SYNCHRONOUS_NONALERTです。 このオプションは使用しないでください。 代わりに WSASocket 関数を使用し、 dwFlags パラメーターのWSA_FLAG_OVERLAPPED ビットをオフのままにします。
SO_PAUSE_ACCEPT yes yes DWORD (ブール値) ソケットをリッスンする場合は、このオプションを使用します。 オプションを設定すると、ソケットは RST を受け入れるのではなく、すべての受信接続に応答します。
SO_PORT_SCALABILITY yes yes DWORD (ブール値) ローカル コンピューター上の異なるローカル アドレス ポート ペアに対してワイルドカード ポートを複数回割り当てることで、ポートの割り当てを最大化できるようにすることで、ソケットのローカル ポートのスケーラビリティを有効にします。 両方のオプションを使用できるプラットフォームでは、このオプションではなくSO_REUSE_UNICASTPORTを選択します。 詳細については、 SO_PORT_SCALABILITY リファレンスを参照してください。
SO_PROTOCOL_INFO yes WSAPROTOCOL_INFO UNICODE マクロが定義されている場合、このオプションは SO_PROTOCOL_INFOW ソケット オプションに対して定義されます。 UNICODE マクロが定義されていない場合、このオプションは SO_PROTOCOL_INFOA ソケット・オプションに対して定義されます。
SO_PROTOCOL_INFOA yes WSAPROTOCOL_INFOA 指定されたソケットの WSAPROTOCOL_INFOA 構造体を返します。
SO_PROTOCOL_INFOW yes WSAPROTOCOL_INFOW 指定されたソケットの WSAPROTOCOL_INFOW 構造体を返します。
SO_RANDOMIZE_PORT yes yes DWORD (ブール値) このオプションは、バインドされていないソケットで設定する必要があります。 SO_RANDOMIZE_PORTが設定され、ソケットでエフェメラル ポートが選択されると、ランダムなポート番号がバインドされます。 自動再利用ポート (SO_REUSE_UNICASTPORT を使用して選択されたポート) も返されたポートをランダム化するため、アプリケーションがSO_REUSE_UNICASTPORTを設定し、SO_RANDOMIZE_PORTを設定しようとすると、2 番目の setsockopt 呼び出しは失敗します。
SO_RCVBUF yes yes ダブルワード 受信用に予約されたソケットごとのバッファー領域の合計。 これはSO_MAX_MSG_SIZEとは無関係であり、TCP 受信ウィンドウのサイズに必ずしも対応するとは限りません。
SO_RCVLOWAT yes yes ダブルワード 下位互換性のために BSD UNIX のソケット オプションが含まれています。 このオプションは、ソケット入力操作で処理する最小バイト数を設定します。 このオプションは、Windows TCP/IP プロバイダーではサポートされていません。 このオプションを Windows Vista 以降で使用すると、getsockopt 関数と setsockopt 関数は WSAEINVAL で失敗します。 以前のバージョンのWindowsでは、これらの関数は WSAENOPROTOOPT で失敗します。
SO_RCVTIMEO yes yes ダブルワード 受信呼び出しをブロックするためのタイムアウト (ミリ秒単位)。 このオプションの既定値は 0 で、受信操作がタイムアウトしないことを示します。ブロックしている受信呼び出しがタイムアウトした場合、接続は不確定な状態になり、閉じる必要があります。
WSASocket 関数を使用してソケットを作成する場合、dwFlags パラメーターには、タイムアウトが正しく機能するために WSA_FLAG_OVERLAPPED 属性が設定されている必要があります。 それ以外の場合、タイムアウトは有効になることはありません。
SO_REUSEADDR yes yes DWORD (ブール値) ソケットが既に使用されているアドレスとポートにバインドできるようにします。 SO_EXCLUSIVEADDRUSE オプションを使用すると、これを回避できます。
SO_REUSE_UNICASTPORT yes yes DWORD (ブール値) 設定すると、 ConnectEx などの明示的なバインドを必要とする Winsock API 接続関数のエフェメラル ポートの再利用を許可します。 暗黙的なバインドを持つ接続関数 (明示的なバインドを使用しない接続など) には、既定でこのオプションが設定されていることに注意してください。 両方を使用できるプラットフォームで SO_PORT_SCALABILITY の代わりに、このオプションを使用します。
SO_REUSE_MULTICASTPORT yes ダブルワード ソケットに設定すると、このオプションは、ソケットがユニキャスト パケットの受信に使用されることは決してないことを示し、そのポートを他のマルチキャスト専用アプリケーションと共有できることを示します。 値を 1 に設定すると、ポートでマルチキャスト トラフィックを常に共有できます。 この値を 0 (既定値) に設定すると、この動作は無効になります。
SO_SNDBUF yes yes ダブルワード 送信用に予約されたソケットごとのバッファー領域の合計。 これはSO_MAX_MSG_SIZEとは無関係であり、TCP 送信ウィンドウのサイズに必ずしも対応するとは限りません。
SO_SNDLOWAT yes yes ダブルワード 下位互換性のために BSD UNIX のソケット オプションが含まれています。 このオプションは、ソケット出力操作で処理する最小バイト数を設定します。 このオプションは、Windows TCP/IP プロバイダーではサポートされていません。 このオプションを Windows Vista 以降で使用すると、getsockopt 関数と setsockopt 関数は WSAEINVAL で失敗します。 以前のバージョンのWindowsでは、これらの関数は WSAENOPROTOOPT で失敗します。
SO_SNDTIMEO yes yes ダブルワード 送信呼び出しをブロックするためのタイムアウト (ミリ秒単位)。 このオプションの既定値は 0 で、送信操作がタイムアウトしないことを示します。ブロック送信呼び出しがタイムアウトした場合、接続は不確定な状態になり、閉じる必要があります。
WSASocket 関数を使用してソケットを作成する場合、dwFlags パラメーターには、タイムアウトが正しく機能するために WSA_FLAG_OVERLAPPED 属性が設定されている必要があります。 それ以外の場合、タイムアウトは有効になることはありません。
SO_TYPE yes ダブルワード 特定のソケットのソケットの種類 (SOCK_STREAMやSOCK_DGRAMなど) を返します。
SO_UPDATE_ACCEPT_CONTEXT yes DWORD (ブール値) このオプションは AcceptEx 関数と共に使用されます。 このオプションは、リッスンしているソケットから継承されるソケットのプロパティを更新します。 受け入れられたソケットで getpeernamegetsocknamegetsockopt、または setsockopt 関数を使用する場合は、このオプションを設定する必要があります。
SO_UPDATE_CONNECT_CONTEXT yes DWORD (ブール値) このオプションは、 ConnectExWSAConnectByList、および WSAConnectByName 関数で使用されます。 このオプションは、接続が確立された後にソケットのプロパティを更新します。 接続されているソケットで getpeernamegetsockname、getsockoptsetsockopt、または shutdown 関数を使用する場合は、このオプションを設定する必要があります。
SO_USELOOPBACK yes yes DWORD (ブール値) このソケットからデータを送信するときは、ローカル ループバック アドレスを使用します。 このオプションは、送信されたすべてのデータがローカルで受信される場合にのみ使用してください。 このオプションは、Windows TCP/IP プロバイダーではサポートされていません。 このオプションを Windows Vista 以降で使用すると、getsockopt 関数と setsockopt 関数は WSAEINVAL で失敗します。 以前のバージョンのWindowsでは、これらの関数は WSAENOPROTOOPT で失敗します。

SOL_SOCKET オプションのWindowsサポート

Option ウィンドウズ10 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP Windows 2000 WINDOWS NT4 Windows 9x/ME
PVD_CONFIG
SO_ACCEPTCONN yes yes yes yes yes yes yes yes yes
SO_BROADCAST yes yes yes yes yes yes yes yes yes
SO_BSP_STATE yes yes yes yes
SO_CONDITIONAL_ACCEPT yes yes yes yes yes yes yes
SO_CONNDATA yes yes yes yes yes yes yes yes
SO_CONNDATALEN yes yes yes yes yes yes yes yes
SO_CONNECT_TIME yes yes yes yes yes yes yes yes yes
SO_CONNOPT yes yes yes yes yes yes yes yes
SO_CONNOPTLEN yes yes yes yes yes yes yes yes
SO_DISCDATA yes yes yes yes yes yes yes yes
SO_DISCDATALEN yes yes yes yes yes yes yes yes
SO_DISCOPT yes yes yes yes yes yes yes yes
SO_DISCOPTLEN yes yes yes yes yes yes yes yes
SO_DEBUG yes yes yes yes yes yes yes yes yes
SO_DONTLINGER yes yes yes yes yes yes yes yes yes
SO_DONTROUTE yes yes yes yes yes yes yes yes yes
SO_ERROR yes yes yes yes yes yes yes yes yes
SO_EXCLUSIVEADDRUSE yes yes yes yes yes yes yes はい SP4+
SO_GROUP_ID yes yes yes yes
SO_GROUP_PRIORITY yes yes yes yes
SO_KEEPALIVE yes yes yes yes yes yes yes yes yes
SO_LINGER yes yes yes yes yes yes yes yes yes
SO_MAX_MSG_SIZE yes yes yes yes yes yes yes yes yes
SO_MAXDG yes yes yes yes yes yes yes
SO_MAXPATHDG yes yes yes yes yes yes yes
SO_OOBINLINE yes yes yes yes yes yes yes yes yes
SO_OPENTYPE yes yes yes yes yes yes yes yes yes
SO_PORT_SCALABILITY yes yes yes
SO_PROTECT yes
SO_PROTOCOL_INFO yes yes yes yes yes yes yes yes yes
SO_PROTOCOL_INFOA yes yes yes yes yes yes yes yes yes
SO_PROTOCOL_INFOW yes yes yes yes yes yes yes yes yes
SO_RCVBUF yes yes yes yes yes yes yes yes yes
SO_RCVLOWAT
SO_RCVTIMEO yes yes yes yes yes yes yes yes yes
SO_RANDOMIZE_PORT yes yes yes yes
SO_REUSEADDR yes yes yes yes yes yes yes yes yes
SO_REUSE_UNICASTPORT yes
SO_REUSE_MULTICASTPORT yes
SO_SNDBUF yes yes yes yes yes yes yes yes yes
SO_SNDLOWAT
SO_SNDTIMEO yes yes yes yes yes yes yes yes yes
SO_TYPE yes yes yes yes yes yes yes yes yes
SO_UPDATE_ACCEPT_CONTEXT yes yes yes yes yes yes yes yes
SO_UPDATE_CONNECT_CONTEXT yes yes yes yes yes yes
SO_USELOOPBACK

Remarks

SOL_SOCKET ソケット オプションは、いくつかの Winsock ヘッダー ファイルで定義されています。

  • Winsock2.h
  • Mswsock.h
  • Ws2def.h

Windows Vista 以降用にリリースされた Microsoft Windows ソフトウェア開発キット (SDK) では、ヘッダー ファイルの編成が変更され、SOL_SOCKET レベルは、Winsock2.h ヘッダー ファイルに自動的に含まれる Ws2def.h ヘッダー ファイルで定義されます。 SOL_SOCKET ソケット オプションの一部は、Winsock2.h ヘッダー ファイルと Mswsock.h ヘッダー ファイルで定義されています。 残りの SOL_SOCKET ソケット オプションは 、Winsock2.h ヘッダー ファイルによって自動的に含まれる Ws2def.h ヘッダー ファイルで定義されます。 Ws2def.h を直接使用しないでください。

Windows Server 2003 および Windows XP 用にリリースされたプラットフォーム ソフトウェア開発キット (SDK) では、SOL_SOCKET レベルは Winsock2.h ヘッダー ファイルで定義されます。 SOL_SOCKET ソケット オプションは、Winsock2.h ヘッダー ファイルと Mswsock.h ヘッダー ファイルで定義されています。

Requirements

Requirement 価値
Header
Winsock2.h;
Mswsock.h;
Ws2def.h (Winsock2.h を含む)