套接字上下文選項列表

套接字上下文選項

套接字上下文選項 — 套接字上下文選項列表

說明

套接字上下文選項可用於所有工作在套接字上的封裝協議,像 tcp, http 和 ftp。

可選項

bindto

使用者 PHP 訪問網路的指定的 IP 地址(IPv4 或 IPv6 其中的一個)和/或 埠號,這個語法是 ip:port。 設定 IP 或者 port 為 0 將會讓系統選擇 IP 或 port。

注意:

由於 FTP 在正常操作時會建立兩個 socket 連線,因此無法使用此選項指定埠號。

backlog

用於限制 socket 監聽佇列中未完成連線的數量。

注意:

這僅適用於 stream_socket_server()。

ipv6_v6only

覆蓋有關 IPv4 對映到 IPv6 的操作系統預設值。

注意:

在 [::] 上存在繫結的時候,當嘗試在各自的 Ipv4 地址上監聽,這是尤其重要。

這僅適用於 stream_socket_server()。

so_reuseport

即使來自不同的程序,也能對同一個 ip:port 對進行多個繫結。

注意:

這僅適用於 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);

?>

Leave a Reply

Your email address will not be published. Required fields are marked *