socket_set_option

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

socket_set_option为套接字设置套接字选项

说明

socket_set_option(
    Socket $socket,
    int $level,
    int $option,
    array|string|int $value
): bool

socket_set_option() 函数在 socket 的指定协议 level 上设置由 option 参数指定的选项,value 为指定值。

参数

socket

socket_create()socket_accept() 创建的 Socket 实例。

level

level 参数定义选项所在的协议级别。例如,在 socket 级别设置选项,将使用 SOL_SOCKET 作为 level 参数。在其它级别,例如 TCP,可以使用该级别定义的协议号来指定级别。协议号可以通过 getprotobyname() 找到。

option

套接字可用选项与 socket_get_option() 函数的选项相同。

value

选项值。

返回值

成功时返回 true, 或者在失败时返回 false

更新日志

版本 说明
8.0.0 现在 socketSocket 实例, 之前是 resource

示例

示例 #1 socket_set_option() 示例

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

if (!
is_resource($socket)) {
echo
'Unable to create socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

if (!
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
echo
'Unable to set option on socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

if (!
socket_bind($socket, '127.0.0.1', 1223)) {
echo
'Unable to bind socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

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

if (
$rval === false) {
echo
'Unable to get socket option: '. socket_strerror(socket_last_error()) . PHP_EOL;
} else if (
$rval !== 0) {
echo
'SO_REUSEADDR is set on socket !' . PHP_EOL;
}
?>

参见

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top