要實現多客戶端通信,可以使用PHP的socket_create函數創建一個主socket,并使用socket_accept函數接受多個客戶端的連接。然后使用socket_read和socket_write函數完成客戶端和服務器之間的通信。
以下是一個簡單的示例代碼,演示如何使用PHP實現多客戶端通信:
// 創建socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// 綁定地址和端口
socket_bind($socket, '127.0.0.1', 8888);
// 監聽連接
socket_listen($socket);
echo "Server started, waiting for clients...\n";
$clients = array();
while (true) {
$read = array();
$read[] = $socket;
foreach ($clients as $client) {
$read[] = $client;
}
// 選擇socket
socket_select($read, $write, $except, null);
// 處理新的客戶端連接
if (in_array($socket, $read)) {
$newClient = socket_accept($socket);
$clients[] = $newClient;
echo "New client connected\n";
}
// 處理客戶端消息
foreach ($clients as $key => $client) {
if (in_array($client, $read)) {
$msg = socket_read($client, 1024);
if ($msg === false) {
unset($clients[$key]);
continue;
}
echo "Received message: $msg\n";
// 回復消息
socket_write($client, "Server received: $msg\n");
}
}
}
// 關閉socket
socket_close($socket);
以上代碼創建了一個簡單的多客戶端通信的服務器端,監聽地址為127.0.0.1,端口為8888。當有新的客戶端連接時,服務器會輸出"New client connected",并在收到客戶端消息時,打印消息內容并回復客戶端。
請注意,這只是一個簡單的示例,實際應用中可能需要進行更多的錯誤處理和安全檢查。