ソケットコンテキストオプション一覧

# ソケットコンテキストオプション

ソケットコンテキストオプション — ソケットコンテキストオプション一覧

### 説明

ここでは、ソケット越しに動作するラッパー すなわち `tcp`、`http` あるいは `ftp` でサポートされるオプションを扱います。

### オプション

`bindto`

  PHP がネットワークにアクセスする際の IP アドレス (IPv4 あるいは IPv6 のどちらか）やポート番号を指定する際に使用されます。 書式は、IPv4 アドレスの場合は `ip:port`、 IPv6 アドレスの場合は `[ip]:port` です。 IP やポート番号に `0` を指定すると、それをシステムに自動的に設定させる ことができます。

  > 注意:

  > FTP の通常の操作では 2 つのソケット接続を使用するので、 このオプションでポート番号を指定することができません。

`backlog`

  ソケットのリスンキューから出て行く接続の数を制限します。

  > 注意:

  > stream_socket_server() でのみ有効です。

`ipv6_v6only`

  IPv4射影アドレスに関する OS のデフォルトを上書きする

  > 注意:

  > これは、`[::]` に バインドされたアドレスが存在するときに、 IPv4 アドレス で listen しようとする場合に特に重要です。 上で、

  > stream_socket_server() でのみ有効です。

`so_reuseport`

  異なるプロセスからであっても、同じ IPアドレス:ポート のペアに 複数 bind することを許可します。

  > 注意:

  > stream_socket_server() でのみ有効です。

`so_broadcast`

  ブロードキャストアドレスへのデータの送信や、 ブロードキャストアドレスからのデータの受信を有効にします。

  > 注意:

  > stream_socket_server() でのみ有効です。

`tcp_nodelay`

  このオプションを `true` にすると、 `SOL_TCP,NO_DELAY=1` をそれぞれ設定します。 これによって、TCP の Nagle アルゴリズムを無効にします。

### 変更履歴

バージョン | 説明
--- | ---
7.1.0 | `tcp_nodelay` が追加されました。
7.0.1 | `ipv6_v6only` が追加されました。

### 例

例1 基本的な `bindto` の使用例

    <?php
    // IP アドレス '192.168.0.100' でインターネットに接続する
    $opts = array(
        'socket' => array(
            'bindto' => '192.168.0.100:0',
        ),
    );

    // IP アドレス '192.168.0.100' とポート番号 '7000' でインターネットに接続する
    $opts = array(
        'socket' => array(
            'bindto' => '192.168.0.100:7000',
        ),
    );

    // IPv6 アドレス '2001:db8::1' とポート番号 '7000' でインターネットに接続する
    $opts = array(
        'socket' => array(
            'bindto' => '[2001:db8::1]:7000',
        ),
    );

    // ポート番号 '7000' でインターネットに接続する
    $opts = array(
        'socket' => array(
            'bindto' => '0:7000',
        ),
    );

    // コンテキストを作成し…
    $context = stream_context_create($opts);

    // …そしてデータを取得するためにそれを使用する
    echo file_get_contents('http://www.example.com', false, $context);

    ?>

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open