在PHP中,可以使用fsocket函數(shù)來實現(xiàn)實時通信。以下是一個簡單的示例,展示了如何使用fsocket創(chuàng)建一個簡單的聊天服務器和客戶端。
服務器端代碼:
<?php
// 創(chuàng)建一個監(jiān)聽套接字
$server_socket = fsockopen("127.0.0.1", 8080, $errno, $errstr);
if (!$server_socket) {
echo "Error: $errstr ($errno)<br />\n";
} else {
while (true) {
// 接受客戶端連接
$client_socket = fsockopen("127.0.0.1", 8080, $errno, $errstr);
if (!$client_socket) {
echo "Error: $errstr ($errno)<br />\n";
continue;
}
// 讀取客戶端發(fā)送的數(shù)據
$data = fread($client_socket, 1024);
echo "Received from client: $data<br />\n";
// 向客戶端發(fā)送數(shù)據
$response = "Message received";
fwrite($client_socket, $response);
// 關閉客戶端套接字
fclose($client_socket);
}
// 關閉服務器套接字
fclose($server_socket);
}
?>
客戶端代碼:
<?php
// 創(chuàng)建一個套接字
$client_socket = fsockopen("127.0.0.1", 8080, $errno, $errstr);
if (!$client_socket) {
echo "Error: $errstr ($errno)<br />\n";
} else {
// 向服務器發(fā)送數(shù)據
$message = "Hello, Server!";
fwrite($client_socket, $message);
// 讀取服務器返回的數(shù)據
$response = fread($client_socket, 1024);
echo "Received from server: $response<br />\n";
// 關閉套接字
fclose($client_socket);
}
?>
在這個示例中,服務器監(jiān)聽8080端口,并在接收到客戶端連接時讀取和發(fā)送數(shù)據??蛻舳诉B接到服務器并發(fā)送一條消息,然后接收服務器的響應。
這只是一個簡單的示例,實際應用中可能需要考慮更多因素,例如多個客戶端之間的通信、非阻塞I/O、錯誤處理、加密等。但是,這個示例應該足以讓你開始使用fsocket實現(xiàn)實時通信。