socket_set_option

ソケットのオプションを設定する

説明

bool socket_set_option(
    Socket $socket,
    int $level,
    int $option,
    arraystringint $value
)

socket_set_option 関数は、level が指すプロトコルレベルでソケット socket のオプション option に値 value を設定します。

パラメータ

socket

socket_create あるいは socket_accept で作成した Socket クラスのインスタンス。

level

level パラメータは、オプションのプロトコルレベルを指定します。 例えば、オプションをソケットレベルで設定するには level パラメータに SOL_SOCKET を指定します。 TCP のようなそれ以外のレベルの場合、そのレベルのプロトコル番号を指定します。 プロトコル番号は getprotobyname 関数を使用して取得可能です。

option

使用可能なソケットオプションは socket_get_option 関数と同じです。

value

オプションの値。

戻り値

成功した場合に true を、失敗した場合に false を返します。

変更履歴

バージョン 説明
8.0.0 socket は、Socket クラスのインスタンスになりました。 これより前のバージョンでは、リソース型でした。

例1 socket_set_option の例

<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if (!is_resource($socket)) {
    echo 'ソケットを作成できません: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
    echo 'ソケットのオプションを設定できません: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

if (!socket_bind($socket, '127.0.0.1', 1223)) {
    echo 'ソケットをバインドできません: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

$rval = socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR);

if ($rval === false) {
    echo 'ソケットのオプションを取得できません: '. socket_strerror(socket_last_error()) . PHP_EOL;
} else if ($rval !== 0) {
    echo 'SO_REUSEADDR がソケットに設定されています!' . PHP_EOL;
}
?>

参考

  • socket_create
  • socket_bind
  • socket_strerror
  • socket_last_error
  • socket_get_option