函式名稱:socket_listen()
適用版本:PHP 4 >= 4.1.0, PHP 5, PHP 7
函式描述:socket_listen() 函式用於將一個套接字標記為被動套接字,開始監聽連線請求。
語法:bool socket_listen ( resource $socket [, int $backlog = 0 ] )
引數:
- $socket:必需,套接字資源,透過 socket_create() 建立。
- $backlog:可選,指定最大等待連線的數量,預設為0,表示系統預設的連線佇列長度。
返回值:成功時返回 true,失敗時返回 false。
示例:
// 建立套接字
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("套接字建立失敗: " . socket_strerror(socket_last_error()));
}
// 繫結套接字到IP和埠
$bind = socket_bind($socket, '127.0.0.1', 8080);
if ($bind === false) {
die("套接字繫結失敗: " . socket_strerror(socket_last_error($socket)));
}
// 開始監聽連線請求
$listen = socket_listen($socket, 5);
if ($listen === false) {
die("監聽失敗: " . socket_strerror(socket_last_error($socket)));
}
echo "正在監聽連線請求...\n";
// 接受客戶端連線
$clientSocket = socket_accept($socket);
if ($clientSocket === false) {
die("接受連線失敗: " . socket_strerror(socket_last_error($socket)));
}
echo "已接受客戶端連線。\n";
// 關閉套接字
socket_close($socket);
在上面的示例中,我們首先建立了一個套接字,然後將其繫結到本地IP地址和埠。接下來,使用 socket_listen() 函式開始監聽連線請求,它將套接字標記為被動套接字,並指定了最大等待連線的數量為5。然後,我們使用 socket_accept() 函式接受來自客戶端的連線。
請注意,示例中的錯誤處理僅供參考,實際應用中可能需要根據具體情況進行適當的錯誤處理。