SOL_SOCKET ソケット オプション
次の表では 、ソケット オプションSOL_SOCKET 説明します。 ソケット オプションの取得と設定の詳細については、 getsockopt および setsockopt 関数のリファレンス ページを参照してください。
プロトコルを列挙し、インストールされている各プロトコルでサポートされているプロパティを検出するには、 WSAEnumProtocols、 WSCEnumProtocols、または 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 関数と共に使用されます。 このオプションは、リッスンしているソケットから継承されるソケットのプロパティを更新します。 受け入れられたソケットで getpeername、 getsockname、 getsockopt、または setsockopt 関数を使用する場合は、このオプションを設定する必要があります。 | |
SO_UPDATE_CONNECT_CONTEXT | はい | DWORD (ブール値) | このオプションは、 ConnectEx、 WSAConnectByList、および WSAConnectByName 関数で使用されます。 このオプションは、接続が確立された後にソケットのプロパティを更新します。 接続されているソケットで getpeername、getsockname、getsockopt、setsockopt、または 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 ヘッダー ファイルで定義されています。
要件
要件 | 値 |
---|---|
ヘッダー |
|