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

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

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

### 説明

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

### オプション

`bindto`

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

  > 注意:

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

`backlog`

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

  > 注意:

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

`ipv6_v6only`

  Overrides the OS default regarding mapping IPv4 into IPv6.

  > 注意:

  > This is important in particular when trying to listen on IPv4 addresses separately while there exists a binding on [::].

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

`so_reuseport`

  Allows multiple bindings to a same ip:port pair, even from separate processes.

  > 注意:

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

`so_broadcast`

  Enables sending and receiving data to/from broadcast addresses.

  > 注意:

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

`tcp_nodelay`

  Setting this option to `TRUE` will set SOL_TCP,NO_DELAY=1 appropriately, thus disabling the TCP Nagle algorithm.

### 変更履歴

バージョン | 説明
--- | ---
7.1.0 | `tcp_nodelay` が追加されました。
7.0.1 | `ipv6_v6only` が追加されました。
7.0.0 | `so_broadcast` が追加されました。
7.0.0 | `so_reuseport` が追加されました。
5.3.3 | `backlog` が追加されました。
5.1.0 | `bindto` が追加されました。

### 例

例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);
?>`