用socket实现简单的服务端和客户端
服务端
// 创建 Socket 服务器程序
$serverSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($serverSocket, 'localhost', 8080);
socket_listen($serverSocket);
// 创建一个客户端列表,用于存储所有连接到服务器的客户端和它们所属的标识符
$clients = array();
while (true) {
// 接受新的客户端连接
$clientSocket = socket_accept($serverSocket);
// 获取客户端请求中的标识符
$request = socket_read($clientSocket, 1024);
$clientId = json_decode($request, true)['clientId'];
echo $clientId . PHP_EOL;
// 将客户端添加到客户端列表中
$clients[$clientId] = $clientSocket;
// 当需要向指定用户发送数据时,根据标识符查找对应的客户端并发送数据
$message = 'Hello, client!' . $clientId;
if (isset($clients[$clientId])) {
socket_write($clients[$clientId], $message);
}
}
客户端
// 创建 Socket 客户端程序
$clientSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// 连接到服务器
$serverAddress = 'localhost';
$serverPort = 8080;
socket_connect($clientSocket, $serverAddress, $serverPort);
// 生成客户端标识符,并向服务器发送一条消息
$clientId = uniqid();
$message = json_encode(array('clientId' => $clientId));
socket_write($clientSocket, $message);
// 接收来自服务器的响应消息,并打印到控制台
$response = socket_read($clientSocket, 1024);
echo "$response\n";
输出结果
本作品采用《CC 协议》,转载必须注明作者和本文链接