函式名:socket_accept()
適用版本:PHP 4 >= 4.1.0, PHP 5, PHP 7
用法:socket_accept() 函式用於接受一個連線請求,並返回一個新的套接字資源,用於與客戶端進行通訊。
語法:resource socket_accept ( resource $socket )
引數:
- $socket:必需,一個監聽套接字資源,由 socket_create() 或 socket_accept() 返回。
返回值:成功時返回一個新的套接字資源,用於與客戶端通訊。失敗時返回 FALSE,並可透過 socket_last_error() 獲取錯誤碼。
示例:
// 建立套接字
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// 繫結套接字到 IP 地址和埠
socket_bind($socket, '127.0.0.1', 8080);
// 開始監聽連線
socket_listen($socket);
// 接受客戶端連線請求
$clientSocket = socket_accept($socket);
// 與客戶端進行通訊
while (true) {
// 從客戶端接收資料
$data = socket_read($clientSocket, 1024);
// 處理資料
// 向客戶端傳送響應
socket_write($clientSocket, "Hello, client!");
// 結束通訊
if ($data === 'quit') {
socket_close($clientSocket);
break;
}
}
// 關閉套接字
socket_close($socket);
上述示例中,我們建立了一個套接字並繫結到本地的 8080 埠。然後透過 socket_listen() 函式開始監聽連線。當有客戶端連線請求時,我們使用 socket_accept() 來接受連線,並返回一個新的套接字資源 $clientSocket。然後我們進入一個迴圈,透過 socket_read() 從客戶端接收資料,處理資料後透過 socket_write() 向客戶端傳送響應。如果接收到的資料為 "quit",則關閉與客戶端的連線並結束通訊。最後我們使用 socket_close() 關閉套接字。