SETSOCKOPT

SETSOCKOPT コマンドを使用して、ソケット・オプションを設定します。

フォーマット

構文図を読む構文図をスキップする
>>-SOCKET--(--"SETSOCKOPT"--,--socketid--,--levelname----------->

>--,--optname--,--optvalue--)----------------------------------><

パラメーター

socketid
ソケット・ディスクリプター。
levelname
プロトコル・レベル。以下のプロトコル・レベルがサポートされます。
IPPROTO_TCP
TCP 層でのソケット・オプションを設定します
IPPROTO_IP
IP 層での IPv4 ソケット・オプションを設定します
IPPROTO_IPV6
IP 層での IPv6 ソケット・オプションを設定します
SOL_SOCKET
ソケット層でのソケット・オプションを設定します
optname
オプション。以下の規則が適用されます。
  • SO_ で始まるオプションには、SOL_SOCKET プロトコル・レベルが必要である。
  • TCP_ で始まるオプションには、IPPROTO_TCP プロトコル・レベルが必要である。
  • IP_ で始まるオプションには、IPPROTO_IP プロトコル・レベルが必要である。
  • IPV6_ で始まるオプションには、IPPROTO_IPV6 プロトコル・レベルが必要である。
  • MCAST で始まるオプションには、IPPROTO_IP または IPPROTO_IPV6 プロトコル・レベルが必要である。
optname パラメーターに対して、以下の値がサポートされています。
IP_ADD_MEMBERSHIP
(IPV4 のみ) アプリケーションが、特定のインターフェースでマルチキャスト・グループに参加できるようにします。マルチキャスト・グループ内のアプリケーションは、マルチキャスト・データグラムを受信することができます。 アプリケーションは同一インターフェース上で複数のマルチキャスト・グループに参加したり、複数のインターフェース上で同一のマルチキャスト・グループに参加したりできますが、1 つのコマンドに指定できるのは 1 つのインターフェース・アドレスのみです。optvalue パラメーターは、マルチキャスト・アドレスを含み、その後にアプリケーションがマルチキャスト・データグラムを受信しようとするインターフェース・アドレスが指定されたストリングでなければなりません。例えば、"224.224.224.1 10.11.13.4" となります。このコマンドは戻りコードまたはエラー番号を戻します。
ヒント: インターフェース・アドレスを判別するには、SIOCGIFADDR オプションを指定して IOCTL コマンドを使用します。
IP_ADD_SOURCE_MEMBERSHIP
(IPV4 のみ) アプリケーションが、特定のインターフェースおよび特定のソース・アドレスでマルチキャスト・グループに参加できるようにします。optvalue パラメーターは、マルチキャスト・アドレス、インターフェース・アドレス、およびソース・アドレスを含むストリングでなければなりません。例えば、"224.224.224.1 10.11.16.103 10.11.107.1" となります。 ソース・アドレスはフィルターを表します。アプリケーションは、ソース・アドレスがマルチキャスト・グループのソース・アドレス・フィルターに一致する場合にのみ、マルチキャスト・パケットを受信します。

このコマンドは戻りコードまたはエラー番号を戻します。

制約事項:
  • 1 つの呼び出しに対して 1 つのインターフェース・アドレスのみを指定することができます。
  • スタックは、マルチキャスト・グループ・インターフェースのペアごとに最大 64 個のソース・アドレス・フィルターをサポートします。フィルターの数が最大数を超えると、ENOBUFS が戻されます。
  • 各呼び出しには、1 つのソース・アドレスのみを指定できます。 マルチキャスト・グループに参加して、2 つの異なるソース・アドレスからデータを受信したい場合は、SETSOCKOPT コマンドを 2 回発行してください。
ガイドライン: マルチキャスト・データグラムを受け取る必要があるアプリケーションは、マルチキャスト・グループに参加する必要があります。アプリケーションが 1 つ以上の送信元から特定のグループでマルチキャスト・パケットを受信したい場合は、このオプションを使用してください。
IP_BLOCK_SOURCE
(IPV4 のみ) アプリケーションが、特定のアドレスから送信されるマルチキャスト・パケットをブロックできるようにします。アプリケーションは事前にマルチキャスト・グループに参加している必要があります。optvalue パラメーターは、マルチキャスト・アドレス、ソース・アドレス、およびインターフェース・アドレスを含むストリングでなければなりません。例えば、"224.224.224.1 10.11.16.103 10.11.107.1" となります。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
IP_DROP_MEMBERSHIP
(IPV4 のみ) アプリケーションがマルチキャスト・グループを終了できるようにします。ソースのフィルタリングが有効になっている場合、すべてのソース・フィルターは削除されます。optvalue パラメーターは、マルチキャスト・アドレスおよびインターフェース・アドレスを含むストリングでなければなりません。例えば、"224.224.224.1 10.11.13.4" となります。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
IP_DROP_SOURCE_MEMBERSHIP
(IPV4 のみ) アプリケーションが、マルチキャスト・ソース・マルチキャスト・グループを終了できるようにします。アプリケーションは、このグループからのマルチキャスト・パケットを受信しなくなります。optvalue パラメーターは、マルチキャスト・アドレス、ソース・アドレス、およびインターフェース・アドレスを含むストリングでなければなりません。例えば、"224.224.224.1 10.11.13.4 10.11.107.1" となります。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
IP_MULTICAST_IF
(IPV4 のみ) アウトバウンド・マルチキャスト・データグラムの送信に使用される IPv4 インターフェース・アドレスを設定します。マルチキャスト・データグラムは、一度に 1 つのインターフェースでのみ送信できます。optvalue パラメーターは、インターフェースの IP アドレスです。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
IP_MULTICAST_LOOP
(IPv4 のみ) 送信側ホストの所属するグループにデータグラムが送信されるときに、マルチキャスト・データグラムをローカル配信のために IP 層によって発信インターフェース上でループバックするかどうかを制御します。デフォルトで、ループバックは使用可能に設定されています。 optvalue パラメーターは、0 (無効) または 1 (有効) のいずれかの値でなければなりません。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
IP_MULTICAST_TTL
(IPV4 のみ) 発信マルチキャスト・データグラムの IP データグラム存続時間 (ホップ) を設定します。 デフォルトで、これは 1 に設定されます。マルチキャストはローカル・サブネットでのみ使用可能です。 optvalue パラメーターは、1 から s255 の範囲の整数でなければなりません。
IP_UNBLOCK_SOURCE
(IPV4 のみ) アプリケーションが、以前にブロックされた IPv4 マルチキャスト・グループのソース・アドレスを非ブロックできるようにします。1 つの呼び出しに対して 1 つのインターフェース・アドレスのみを指定することができます。optvalue パラメーターは、マルチキャスト・アドレス、ソース・アドレス、およびインターフェース・アドレスを含むストリングでなければなりません。例えば、"224.224.224.1 10.11.103.1 10.11.107.1" となります。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
IPV6_ADDR_PREFERENCES
(AF_INET6 のみ) ソース・アドレスを選択するときに使用される IPv6 アドレスの優先設定を指定します。 以下に、有効な IPV6_ADDR_PREFERENCES フラグを示します。
IPV6_PREFER_SRC_HOME
IPv6 ホーム・アドレスが IPv6 気付アドレスより優先されます。
IPV6_PREFER_SRC_COA
IPv6 気付アドレスが IPv6 ホーム・アドレスより優先されます。
IPV6_PREFER_SRC_TMP
IPv6 一時アドレスが IPv6 公開アドレスより優先されます。
IPV6_PREFER_SRC_PUBLIC
IPv6 公開アドレスが IPv6 一時アドレスより優先されます。
IPV6_PREFER_SRC_CGA
暗号化されて生成された IPv6 アドレスが、暗号化されずに生成された IPv6 アドレスより優先されます。
IPV6_PREFER_SRC_NONCGA
暗号化されずに生成された IPv6 アドレスが、暗号化されて生成された IPv6 アドレスより優先されます。
フラグは 1 つだけ指定することも、複数のフラグをスペースで区切って指定することもできます。
結果:
  • IPV6_PREFER_SRC_CGA と IPV6_PREFER_SRC_NONCGA など、矛盾するフラグを組み合わせると、エラー・コード 2020 (EINVALIDCOMBINATION) が発生します。
  • スタックでは、設定された 1 つ以上の IPV6_ADDR_PREFERENCES フラグに準拠しないソース IP アドレスを割り当てる可能性があります。
IPV6_JOIN_GROUP
(IPv6 のみ) アプリケーションが、特定のインターフェースでマルチキャスト・グループに参加できるようにします。マルチキャスト・データグラムを受け取る必要があるアプリケーションのみ、マルチキャスト・グループに参加する必要があります。 アプリケーションは同一インターフェース上で複数のマルチキャスト・グループに参加することができます。あるいは、複数のインターフェース上で同一のマルチキャスト・グループに参加することができます。optvalue パラメーターは、マルチキャスト・アドレスと、アプリケーションがマルチキャスト・データグラムを受信したいインターフェースの指標を含むストリングでなければなりません。例えば、"FF02:225:9:10::11 3" となります。インターフェース指標が 0 に設定されている場合、スタックはローカル・アドレスを選択します。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
ガイドライン: IOCTL コマンドの SIOCGIFNAMEINDEX 関数を使用して、インターフェースの指標番号を判別します。
制約事項: 1 つの呼び出しに 1 つのインターフェース・アドレスのみを指定することができます。マルチキャスト・アドレスは、実インターフェースのみと関連付けることができます。
IPV6_LEAVE_GROUP
(IPv6 のみ) アプリケーションが、マルチキャスト・グループを終了できるようにします。optvalue パラメーターは、マルチキャスト・アドレスとインターフェース・アドレスを含むストリングでなければなりません。例えば、"FF02:225:9:10::11 3"。optvalue パラメーターは、元の IPV6_JOIN_GROUP パラメーターと一致していなければなりません。例えば、IPV6_JOIN_GROUP に指定されたインターフェース指標が 0 だった場合、IPV6_LEAVE_GROUP コマンドのインターフェース指標としても 0 を指定する必要があります。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
IPV6_MULTICAST_HOPS
(IPv6 のみ) 発信マルチキャスト・パケットに使用されるホップ限度を設定します。 optvalue パラメーターはオプションです。発行されない場合、ホップ限度は 1 に設定されます。
optvalue パラメーターの値は次のようになります。
-1
スタックのデフォルト値が使用されます。
0-255
ホップ制限。
このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
制約事項: ホップしきい値を TCP/IP デフォルト値よりも大きい値に設定するには、REXX アプリケーション・ユーザー ID にスーパーユーザー権限が必要です。
IPV6_MULTICAST_IF
(IPv6 のみ) ソケット・アプリケーションからアウトバウンド・マルチキャスト・データグラムを送信するために使用される IPv6 インターフェースの指標を設定します。optvalue パラメーターは、インターフェース指標番号 (例えば、34) を指定する必要があります。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
IPV6_MULTICAST_LOOP
(IPv6 のみ) 送信側ホストが所属するグループにデータグラムが送信されるときに、マルチキャスト・データグラムをローカル配信のために IP 層によって発信インターフェース上でループバックするかどうかを制御します。デフォルトでは、マルチキャスト・データグラムはループバックされます。optvalue パラメーターは、0 (無効) または 1 (有効) のいずれかの値でなければなりません。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
IPV6_UNICAST_HOPS
(IPv6 のみ) 発信ユニキャスト IPv6 パケットに使用されるホップ限度を設定します。optvalue パラメーターはオプションです。発行されない場合、ホップ限度は 1 に設定されます。
optvalue パラメーターの値は次のようになります。
-1
スタックのデフォルト値が使用されます。
0-255
ホップ制限。
このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
制約事項: TCP/IP デフォルト値よりも大きい値にホップしきい値を設定する場合、アプリケーションには APF 許可が必要です。このオプションは、CICS® アプリケーションで使用された場合には無効です。CICS アプリケーションは、APF 許可として実行することはできません。
IPV6_V6ONLY
(IPv6 のみ) ソケットを IPv6 パケットのみを送受信するように制限します。 デフォルトでは、ソケットは制限されません。optvalue パラメーターは、0 (無効) または 1 (有効) のいずれかの値でなければなりません。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
MCAST_BLOCK_SOURCE
アプリケーションが、特定のソース・アドレスからのマルチキャスト・パケットをブロックできるようにします。マルチキャスト・グループには、事前に参加している必要があります。optvalue パラメーターは、インターフェース指標、マルチキャスト・アドレス、およびソース・アドレスを含むストリングでなければなりません。NAME ストリングを使用して、マルチキャスト・アドレスおよびソース・アドレスを指定します。次のストリングは、optvalue パラメーターに対するコーディングの例です。
"45 AF_INET6 54666 0 FF02::32:1 0 AF_INET6 0 0 2001:10:11:107::1 0"

NAME ストリングのフォーマットについて詳しくは、ソケット構造体の表示方法を参照してください。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。

ヒント: このオプションは、IPv4 と IPv6 の両方に有効です。
MCAST_JOIN_GROUP
アプリケーションが特定のインターフェース上のマルチキャスト・グループに参加することを可能にします。 マルチキャスト・グループに参加する必要があるのは、 マルチキャスト・データグラムを受け取りたいアプリケーションのみです。 optvalue パラメーターは、インターフェース指標とマルチキャスト・アドレスを含むストリングでなければなりません。ソケット・アドレス名フォーマットを使用して、マルチキャスト・アドレスを指定します。次のストリングは、optvalue パラメーターのコーディング例です。

"45 AF_INET 1234 224.224.224.1"

NAME ストリングのフォーマットについて詳しくは、ソケット構造体の表示方法を参照してください。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。

ヒント: このオプションは、IPv4 と IPv6 の両方に有効です。
MCAST_JOIN_SOURCE_GROUP
アプリケーションが、特定のインターフェースおよびソース・アドレスでソース・マルチキャスト・グループに参加できるようにします。マルチキャスト・データグラムを受信したいアプリケーションだけがソース・マルチキャスト・グループに参加する必要があります。 optvalue パラメーターは、インターフェース指標、マルチキャスト・アドレス、およびソース・アドレスを含むストリングでなければなりません。ソケット・アドレス名フォーマットを使用して、マルチキャスト・アドレスおよびソース・アドレスを指定します。次のストリングは、optvalue パラメーターのコーディング例です。
"45 AF_INET6 1234 0 FF02::123:1 0 AF_INET6 0 0 2001:10:11:107::1 0"

NAME ストリングのフォーマットについて詳しくは、ソケット構造体の表示方法を参照してください。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。

ヒント: このオプションは、IPv4 と IPv6 の両方に有効です。
MCAST_LEAVE_GROUP
アプリケーションがマルチキャスト・グループを終了したり、すべてのソース・マルチキャスト・グループを終了することを可能にします。optvalue パラメーターは、インターフェース指標とマルチキャスト・アドレスを含むストリングでなければなりません。ソケット・アドレス名フォーマットを使用してマルチキャスト・アドレスを指定します。次のストリングは、optvalue パラメーターのコーディング例です。
"45 AF_INET6 1234 0 FF02::123:1 0"

NAME ストリングのフォーマットについて詳しくは、ソケット構造体の表示方法を参照してください。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。

ヒント: このオプションは、IPv4 と IPv6 の両方に有効です。
MCAST_LEAVE_SOURCE_GROUP
アプリケーションがソース・マルチキャスト・グループを終了できるようにします。optvalue パラメーターは、インターフェース指標、マルチキャスト・アドレス、およびソース・アドレスを含むストリングでなければなりません。ソケット・アドレス名フォーマットを使用して、マルチキャスト・アドレスおよびソース・アドレスを指定します。次のストリング (すべて 1 行) は、optvalue パラメーターのコーディング例です。
"45 AF_INET6 1234 0 FF02::123:1 0 AF_INET6 1234 0 
		2001:10:11:103::1 0"

NAME ストリングのフォーマットについて詳しくは、ソケット構造体の表示方法を参照してください。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。

ヒント: このオプションは、IPv4 と IPv6 の両方に有効です。
MCAST_UNBLOCK_SOURCE
アプリケーションが、特定のアドレスから送信されるマルチキャスト・パケットを非ブロックできるようにします。マルチキャスト・グループが事前にブロックされていなければなりません。 optvalue パラメーターは、インターフェース指標、マルチキャスト・アドレス、およびソース・アドレスを含むストリングでなければなりません。ソケット・アドレス名フォーマットを使用して、マルチキャスト・アドレスおよびソース・アドレスを指定します。次のストリングは、
optvalue
パラメーターのコーディング例です。

"45 AF_INET6 1234 0 FF02::123:1 0 AF_INET6 1234 0 2001:10:11:103::1 0"

NAME ストリングのフォーマットについて詳しくは、ソケット構造体の表示方法を参照してください。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。

ヒント: このオプションは、IPv4 と IPv6 の両方に有効です。
制約事項: 1 つの呼び出しには 1 つのソース・アドレスのみを指定することができます。
SO_ASCII
(REXX のみ) すべての着信データを ASCII から EBCDIC に変換し、すべての発信データを EBCDIC から ASCII に変換できるようにします。optvalue パラメーターは、0 (無効) または 1 (有効) のいずれかの値でなければなりません。このオプションは、エラー・コードと ON (有効) または OFF (無効) を含むストリングを戻します。オプションが有効な場合、変換テーブルの名前も戻されます。次のストリングは、戻されるストリングの例です。0 ON MYTRANTB
変換テーブルは、次の順序で検索されます。
  1. user_prefix.subtaskid.TCPXLBIN
  2. user_prefix.userid.TCPXLBIN
  3. system_prefix.STANDARD.TCPXLBIN
  4. system_prefix.RXSOCKET.TCPXLBIN
  5. 内部テーブル
以下の記述が適用されます。
  • user_prefix 値は、ユーザー ID または REXX プログラムのジョブ名である。
  • system_prefix 値は、TCPIP または hlq.TCPIP.DATA からの値である。 system_prefix 値は、サイトの規則に合わせて変更することができる。
  • subtaskid 値は、ソケット・セットの名前である。
  • userid 値は、REXX EXEC の実行に使用されるユーザー ID である。
内部テーブルが使用される場合、データは次の方法で変換されます。
図 1. ASCII から EBCDIC
-------------------------------------------------------------- 
| ASCII      | ASCII データのバイトの 2 番目の 16 進数       |
| から       |-----------------------------------------------|
| EBCDIC     | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| A| B| C| D| E| F| 
|------------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | 0 |00|01|02|03|37|2D|2E|2F|16|05|25|0B|0C|0D|0E|0F| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | 1 |10|11|12|13|3C|3D|32|26|18|19|3F|27|1C|1D|1E|1F| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | 2 |40|4F|7F|7B|5B|6C|50|7D|4D|5D|5C|4E|6B|60|4B|61| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | 3 |F0|F1|F2|F3|F4|F5|F6|F7|F8|F9|7A|5E|4C|7E|6E|6F| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | 4 |7C|C1|C2|C3|C4|C5|C6|C7|C8|C9|D1|D2|D3|D4|D5|D6| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | 5 |D7|D8|D9|E2|E3|E4|E5|E6|E7|E8|E9|4A|E0|5A|5F|6D| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|ASCII   | 6 |79|81|82|83|84|85|86|87|88|89|91|92|93|94|95|96|
|データの|---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
|バイトの| 7 |97|98|99|A2|A3|A4|A5|A6|A7|A8|A9|C0|6A|D0|A1|07|
| 最初の |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
|16 進数 | 8 |20|21|22|23|24|15|06|17|28|29|2A|2B|2C|09|0A|1B|
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
|        | 9 |30|31|1A|33|34|35|36|08|38|39|3A|3B|04|14|3E|E1|
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
|        | A |41|42|43|44|45|46|47|48|49|51|52|53|54|55|56|57| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | B |58|59|62|63|64|65|66|67|68|69|70|71|72|73|74|75| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | C |76|77|78|80|8A|8B|8C|8D|8E|8F|90|9A|9B|9C|9D|9E| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | D |9F|A0|AA|AB|AC|AD|AE|AF|B0|B1|B2|B3|B4|B5|B6|B7| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | E |B8|B9|BA|BB|BC|BD|BE|BF|CA|CB|CC|CD|CE|CF|DA|DB| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | F |DC|DD|DE|DF|EA|EB|EC|ED|EE|EF|FA|FB|FC|FD|FE|FF| 
-------------------------------------------------------------- 
図 2. EBCDIC から ASCII
-------------------------------------------------------------- 
| EBCDIC     | EBCDIC データのバイトの 2 番目の 16 進数      |
| から       |-----------------------------------------------|
| ASCII      | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| A| B| C| D| E| F| 
|------------+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | 0 |00|01|02|03|9C|09|86|7F|97|8D|8E|0B|0C|0D|0E|0F| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | 1 |10|11|12|13|9D|85|08|87|18|19|92|8F|1C|1D|1E|1F| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | 2 |80|81|82|83|84|0A|17|1B|88|89|8A|8B|8C|05|06|07| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | 3 |90|91|16|93|94|95|96|04|98|99|9A|9B|14|15|9E|1A| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | 4 |20|A0|A1|A2|A3|A4|A5|A6|A7|A8|5B|2E|3C|28|2B|21| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | 5 |26|A9|AA|AB|AC|AD|AE|AF|B0|B1|5D|24|2A|29|3B|5E| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|EBCDIC  | 6 |2D|2F|B2|B3|B4|B5|B6|B7|B8|B9|7C|2C|25|5F|3E|3F|
|データの|---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
|バイトの| 7 |BA|BB|BC|BD|BE|BF|C0|C1|C2|60|3A|23|40|27|3D|22|
| 最初の |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
|16 進数 | 8 |C3|61|62|63|64|65|66|67|68|69|C4|C5|C6|C7|C8|C9|
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
|        | 9 |CA|6A|6B|6C|6D|6E|6F|70|71|72|CB|CC|CD|CE|CF|D0|
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
|        | A |D1|7E|73|74|75|76|77|78|79|7A|D2|D3|D4|D5|D6|D7| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | B |D8|D9|DA|DB|DC|DD|DE|DF|E0|E1|E2|E3|E4|E5|E6|E7| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | C |7B|41|42|43|44|45|46|47|48|49|E8|E9|EA|EB|EC|ED| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | D |7D|4A|4B|4C|4D|4E|4F|50|51|52|EE|EF|F0|F1|F2|F3| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | E |5C|9F|53|54|55|56|57|58|59|5A|F4|F5|F6|F7|F8|F9| 
|        |---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| 
|        | F |30|31|32|33|34|35|36|37|38|39|FA|FB|FC|FD|FE|FF| 
-------------------------------------------------------------- 
SO_BROADCAST
プログラムが、データグラム・メッセージを受信できる宛先に、ソケットを介してブロードキャスト・メッセージを送信できるようにします。デフォルトでは、このオプションは使用不可に設定されています。optvalue パラメーターは、0 (無効) または 1 (有効) のいずれかの値でなければなりません。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
制約事項: このオプションは、ストリーム・ソケットには無効です。
SO_DEBUG
(REXX のみ) デバッグ情報が記録されるかどうかを制御します。デフォルトでは、このオプションは使用不可に設定されています。optvalue パラメーターは、ON (有効) または OFF (無効) のいずれかでなければなりません。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。 このオプションは、ストリーム・ソケットにのみ有効です。
SO_DONTROUTE
ソケットでの発信パケットに対して、通常のルーティング・アルゴリズムをバイパスします。 SEND コマンドの 1 つを使用してパケットを送信する際にローカル・インターフェースを判別できない場合は、51 ENETUNREACH エラー番号が戻されます。このオプションは、1 (有効) または 0 (無効) のいずれかを戻します。
SO_EBCDIC
(REXX のみ) EBCDIC への (または EBCDIC からの) データの変換を可能にします。このオプションは、EBCDIC ホストには無視されます。 optvalue パラメーターは、ON (有効) または OFF (無効) のいずれかでなければなりません。このオプションは、エラー・コードと ON (有効) または OFF (無効) を含むストリングを戻します。 オプションが有効な場合、変換テーブルの名前も戻されます。次のストリングは、戻されるストリングの例です。
0 ON MYTRANTB
SO_KEEPALIVE
定期的にパケットを送信するキープアライブ・メカニズムを、そのメカニズムが機能しているとき以外はアイドル状態となるストリーム・ソケットのアイドル接続に設定します。デフォルトでは、このオプションは使用不可に設定されています。使用可能になっている場合、リモート TCP/IP がパケットまたはパケットの再送信に応答しないと、接続は ETIMEDOUT エラーで終了します。 optvalue パラメーターは、0 (無効) または 1 (有効) のいずれかの値でなければなりません。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
ヒント: キープアライブ・メカニズムは、TCPIP.PROFILE ファイルを変更することによって使用可能にすることもできます。
SO_LINGER
ソケットに対して CLOSE コマンドが発行されたときに送信されなかったデータを TCP/IP がどのように処理するかを指定します。このオプションが使用可能になっていて、CLOSE コマンドが発行された場合は、データが正常に送信されるか接続がタイムアウトになるまで、呼び出し側プログラムはブロックされます。このオプションが使用不可のときに CLOSE コマンドを発行すると、CLOSE コマンドは呼び出し側をブロックせずに制御を戻し、TCP/IP は (通常、データ転送を完了するのに十分な時間を提供する) 指定された時間、データの送信を続けようとします。デフォルトでは、このオプションは使用不可に設定されています。
optvalue パラメーターは、次のフォーマットのストリングです。
linger = "onoff lingertime"
ここで、
  • onoff 値は、0 (無効) または 1 (有効) のいずれかになります。
  • lingertime 値は、CLOSE コマンドの発行後に TCP/IP がデータの送信を試行する秒数です。
このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
制約事項:
  • SO_LINGER オプションを使用しても、TCP/IP は指定された時間のみ待機するので、データ転送の完了は保証されません。
  • このオプションは、ストリーム・ソケットにのみ有効です。
ガイドライン:
  • リンガー時間を 0 に設定するのは避けてください。リンガー時間を 0 に設定すると、接続は正常なクローズを行わずに停止します。この結果、RESET セグメントが接続パートナーに送信されます。異常終了しているソケットが非ブロッキング・モードの場合、CLOSE コマンドはリンガー・オプションが設定されていないかのように処理されます。
  • SO_LINGER オプションは必要な場合にのみ使用可能にしてください。
SO_OOBINLINE
アウト・オブ・バンド・データを受信するかどうかを制御します。このオプションが使用可能な場合、アウト・オブ・バンド・データは受信されると、通常のデータ入力キューに入れられます。その後、OOB フラグが設定されていなくても、RECV または RECVFROM コマンドはこのデータを使用することができます。このオプションが使用不可に設定されている場合、アウト・オブ・バンドは受信されると、優先データ入力キューに入れられます。その後このデータは OOB フラグが設定されている場合にのみ、RECV または RECVFROM コマンドで使用することができます。デフォルトでは、このオプションは使用不可に設定されています。optvalue パラメーターは、0 (無効) または 1 (有効) のいずれかの値でなければなりません。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
制約事項: このオプションは、ストリーム・ソケットにのみ有効です。
SO_RCVBUF
TCP/IP 受信バッファーのデータ部分のサイズを制御します。受信バッファーのサイズはプロトコルに固有で、以下の値を基にします。
  • (TCP ソケット) PROFILE.TCPIP データ・セット内の TCPCONFIG ステートメントの TCPRCVBufrsize キーワード。
  • (UDP ソケット) PROFILE.TCPIP データ・セット内の UDPCONFIG ステートメントの UDPRCVBufrsize キーワード。
  • (ロー・ソケット) デフォルト・サイズ 65535。
optvalue パラメーターは 0 (無効)、または TCP/IP 受信バッファーのサイズを指定する正整数でなければなりません。このオプションを使用不可にした場合は、デフォルト・システム設定が使用されます。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
SO_RCVTIMEO
receive-type 関数が完了までに待機できる時間の最大長を設定します。receive-type 関数が待機する時間の長さを示す秒数およびマイクロ秒数を指定することができます。 receive-type 関数がデータを受信することなくこの時間ブロックされていた場合、関数は errno EWOULDBLOCK を戻します。値 0 (デフォルト) は、receive-type 関数がタイムアウトにならないことを示しています。optvalue パラメーターは、秒数の後にマイクロ秒数が指定されたストリングでなければなりません。 GETSOCKOPT コマンドは戻りコードまたはエラー番号を戻します。秒数の場合、0 - 2 678 400 (31 日に等しい) の範囲の値。を指定します。マイクロ秒数の場合、0 から 1 000 000 (1 秒に等しい) の範囲の値。を指定します。マイクロ秒数を指定することができますが、この関数のインプリメントに使用される内部 TCP/IP タイマーの細分度は約 100 ミリ秒です。以下の receive type コマンドがサポートされています。
  • READ
  • RECV
  • RECVFROM
SO_REUSEADDR
ローカル・アドレスを再使用するかどうかを制御します。このオプションを使用可能にすると、BIND コマンドで使用される通常アルゴリズムを変更します。通常の BIND アルゴリズムでは、IP アドレスとポートの各組み合わせを一度だけバインドすることができます。 アドレスとポートが既にバインド済みの場合、後続の BIND コマンドは失敗し、48 EADDRINUSE エラーを戻します。このオプションが使用可能になっていると、以下の状態がサポートされます。
  • それぞれの呼び出しが異なるローカル IP アドレスを使用し、ワイルドカード・アドレス INADDR_ANY が各ポートごとに一度のみ使用される場合、サーバーは同一ポートを複数回バインドすることができます。
  • クライアント接続がアクティブのサーバーは、再始動可能であり、クライアント接続のすべてを クローズしなくても、そのポートにバインドできます。
  • データグラム・ソケットの場合、同じクラス D のアドレスとポート番号に複数の BIND コマンドを実行できるように、マルチキャストがサポートされています。
デフォルトでは、このオプションは使用不可に設定されています。optvalue パラメーターは、0 (無効) または 1 (有効) のいずれかの値でなければなりません。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
ヒント: 複数のサーバーが INADDR_ANY または IN6ADDR_ANY にバインドして同一ポートで listen することを許可したい場合は、TCPIP.PROFILE の PORT ステートメントに SHAREPORT オプションを使用します。
SO_SNDBUF
TCP/IP 送信バッファーのデータ部分のサイズを制御します。送信バッファーのサイズはプロトコルに固有で、以下の値を基にします。
  • (TCP ソケット) PROFILE.TCPIP データ・セット内の TCPCONFIG ステートメントの TCPSENDBufrsize キーワード。
  • (UDP ソケット) PROFILE.TCPIP データ・セット内の UDPCONFIG ステートメントの UDPSENDBufrsize キーワード。
  • (ロー・ソケット) デフォルト・サイズ 65535。
optvalue パラメーターは 0 (無効)、または TCP/IP 送信バッファーのサイズを指定する正整数でなければなりません。このオプションを使用不可にした場合は、デフォルト・システム設定が使用されます。 このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
SO_SNDTIMEO
send-type 関数が完了までにブロック状態でいられる時間の最大長を設定します。send-type 関数の完了を待機する時間の長さを示す秒数およびマイクロ秒数を指定することができます。send-type 関数がこの期間ブロックされていた場合、関数は一部のカウントを戻すか、データが送信されていない場合は、EWOULDBLOCK に設定された errno を戻します。値 0 (デフォルト) は、send type 関数がタイムアウトにならないことを示します。optvalue パラメーターは、秒数の後にマイクロ秒数が指定されたストリングでなければなりません。 GETSOCKOPT コマンドは戻りコードまたはエラー番号を戻します。秒数の場合、0 - 2 678 400 (31 日に等しい) の範囲の値。を指定します。マイクロ秒数の場合、0 から 1 000 000 (1 秒に等しい) の範囲の値。を指定します。マイクロ秒を指定できますが、この関数のインプリメントに使用される内部 TCP/IP タイマーの細分度は約 100 ミリ秒です。以下の send-type コマンドがサポートされています。
  • SEND
  • SENDTO
  • WRITE
TCP_KEEPALIVE
ソケットに対してキープアライブ・タイミングがアクティブな場合、構成に固有の値ではなく、ソケットに固有のタイムアウト値 (秒単位) が使用されるかどうかを指定します。使用可能になっている場合、ソケットがクローズされるか SETSOCKOPT コマンドによってリセットされるまで、ソケットに固有のタイムアウト値が有効なままとなります。 optvalue パラメーターは 0 (無効) またはキープアライブ値でなければなりません。このオプションは、戻りコードとキープアライブ値を含むストリングを戻します。オプションが使用不可になっている場合、キープアライブ値は 0 です。 ソケット・オプション・パラメーターについて詳しくは、「z/OS Communications Server: IP Programmer's Guide and Reference」で『TCP_KeepAlive socket option』を参照してください。
ヒント: サイト管理者は、TCP/IP スタック・プロファイル・データ・セット TCPIP.PROFILE で INTERVAL パラメーターを TCPCONFIG ステートメントに指定することにより、グローバル・キープアライブ・メカニズムを使用可能にすることができます。
TCP_NODELAY
ソケットを介して送信されるデータが Nagle アルゴリズム (RFC 896) に従うかどうかを指定します。このオプションが使用可能になっている場合、TCP は前に送信されたデータの肯定応答を受信するまでは、少量データを送信するのを待ちます。このオプションが使用不可になっている場合、TCP はデータが渡されたときに、そのデータを送信します。 optvalue パラメーターは、0 (無効) または 1 (有効) のいずれかの値でなければなりません。このオプションは正常に完了すると 0 を戻し、それ以外の場合はエラー番号を戻します。
optvalue
要求されたコマンドを実行するのに必要な追加情報。

戻り値

戻りコードは 0、REXX ソケット API エラー番号、またはソケット・コマンドによって設定される REXX TCP/IP エラー番号になります。戻りコード 0 は、要求されたソケット・コマンドが正常に完了したことを示しています。

このコマンドによって戻される数値エラー・コードの追加情報については、ソケット呼び出しのエラー戻りコードを参照してください。

次のような REXX TCP/IP エラー番号が戻されます。
  • 9 EBADF
  • 22 EINVAL
  • 38 ENOTSOCK
  • 42 ENOPROTOOPT
  • 45 EOPNOTSUPP
  • 60 ETIMEDOUT
次のような REXX ソケット API エラー番号が戻されます。
  • 2001 EINVALIDRXSOCKETCALL
  • 2005 ESUBTASKNOTACTIVE
  • 2009 ESOCKETNOTDEFINED
  • 2012 EINVALIDNAME

LE C/C++ 等価

int setsockopt(int socket, int level, int option_name, char *option_value,
	int *option_length);

コード例

SETSOCKOPT コマンドの使用例については、SEZAINST ファイルの EZARXS01 REXX サンプルを参照してください。