PHP Conference Japan 2024

socket_listen

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_listen監聽 socket 上的連線

說明

socket_listen(Socket $socket, int $backlog = 0): bool

使用 socket_create() 建立 socket socket 並使用 socket_bind() 將其繫結到名稱後,可以指示其監聽 socket 上的連入連線。

socket_listen() 僅適用於類型為 SOCK_STREAMSOCK_SEQPACKET 的 socket。

參數

socket

socket_create()socket_addrinfo_bind() 建立的 Socket 實例

backlog

最多會有 backlog 個連入連線排隊等待處理。如果連線請求到達時佇列已滿,用戶端可能會收到錯誤訊息,指出 ECONNREFUSED,或者,如果底層協定支援重新傳輸,則請求可能會被忽略,以便重試可以成功。

注意:

傳遞給 backlog 參數的最大值很大程度上取決於底層平台。在 Linux 上,它會被靜默截斷為 SOMAXCONN。在 Win32 上,如果傳遞 SOMAXCONN,負責該 socket 的底層服務提供者會將 backlog 設定為最大「合理」值。在此平台上沒有標準方法可以找出實際的 backlog 值。

返回值

成功時返回 true,失敗時返回 false。可以使用 socket_last_error() 取得錯誤碼。此程式碼可以傳遞給 socket_strerror() 以取得錯誤的文字說明。

更新日誌

版本 說明
8.0.0 socket 現在是 Socket 實例;以前,它是 資源

參見

新增註釋

使用者貢獻的註釋 1 則註釋

renmengyang567 at gmail dot com
5 年前
<?php
// 建立 TCP 連線
$sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
socket_bind($sock, '127.0.0.1',5000);
socket_listen($sock,1);
sleep(20);
?>

<fruit>
netstat -ntpl
作用中的網際網路連線 (僅伺服器)
通訊協定 接收佇列 傳送佇列 本機位址 遠端位址 狀態 PID/程式名稱
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 1839/php
To Top