套接字上下文選項列表

套接字上下文選項

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

說明

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

可選項

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);

?>

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *