# socket_set_option

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

socket_set_option — Sets socket options for the socket

### 说明

socket_set_option ( resource `$socket` , int `$level` , int `$optname` , mixed `$optval` ) : bool

The socket_set_option() function sets the option specified by the `optname` parameter, at the specified protocol `level`, to the value pointed to by the `optval` parameter for the `socket`.

### 参数

`socket`

  A valid socket resource created with socket_create() or socket_accept().

`level`

  The `level` parameter specifies the protocol level at which the option resides. For example, to retrieve options at the socket level, a `level` parameter of `SOL_SOCKET` would be used. Other levels, such as TCP, can be used by specifying the protocol number of that level. Protocol numbers can be found by using the getprotobyname() function.

`optname`

  The available socket options are the same as those for the socket_get_option() function.

`optval`

  The option value.

### 返回值

成功时返回 `TRUE`， 或者在失败时返回 `FALSE`。

### 范例

Example #1 socket_set_option() example

    <?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;
    }
    ?>

### 参见

- socket_create() - 创建一个套接字（通讯节点）
- socket_bind() - 给套接字绑定名字
- socket_strerror() - Return a string describing a socket error
- socket_last_error() - Returns the last error on the socket
- socket_get_option() - Gets socket options for the socket