次の表では 、ソケット オプション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 関数と共に使用されます。 このオプションは、リッスンしているソケットから継承されるソケットのプロパティを更新します。 受け入れられたソケットで getpeername、 getsockname、 getsockopt、または setsockopt 関数を使用する場合は、このオプションを設定する必要があります。 | |
| SO_UPDATE_CONNECT_CONTEXT | yes | DWORD (ブール値) | このオプションは、 ConnectEx、 WSAConnectByList、および WSAConnectByName 関数で使用されます。 このオプションは、接続が確立された後にソケットのプロパティを更新します。 接続されているソケットで getpeername、getsockname、getsockopt、setsockopt、または 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 |
|