socket_set_option
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
socket_set_option — ソケットのオプションを設定する
説明
socket_set_option
( resource $socket
, int $level
, int $optname
, mixed $optval
) : bool
socket_set_option() 関数は、level
が指すプロトコルレベルでソケット socket
のオプション
optname
に値 optval
を設定します。
パラメータ
socket
- socket_create() あるいは socket_accept() で作成したソケットリソース。
level
level
パラメータは、オプションのプロトコルレベルを指定します。 例えば、オプションをソケットレベルで取得するにはlevel
パラメータに SOL_SOCKET を指定します。 TCP のようなそれ以外のレベルの場合、そのレベルのプロトコル番号を指定します。 プロトコル番号は getprotobyname() 関数を使用して取得可能です。optname
- 使用可能なソケットオプションは socket_get_option() 関数と同じです。
optval
- オプションの値。
返り値
成功した場合に true
を、失敗した場合に false
を返します。
例
例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() - ソケットのオプションを取得する