SOL_SOCKET ソケット オプション

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

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

一部のソケット オプションでは、これらのテーブルが伝えることができるよりも多くの説明が必要です。このようなオプションには、追加のページへのリンクが含まれています。

注意

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

 

SOL_SOCKET ソケット オプション

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

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

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

注釈

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

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

Windows Vista 以降用にリリースされた Microsoft Windows ソフトウェア開発キット (SDK) では、ヘッダー ファイルのorganizationが変更され、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 ヘッダー ファイルで定義されています。

要件

要件
ヘッダー
Winsock2.h;
Mswsock.h;
Ws2def.h (Winsock2.h を含む)