用PHP实现一个简单的http服务器

在 PHP 中,你可以使用 socket 函数编写一个简单的 HTTP 服务器。以下是一个示例代码,监听 9000 端口,当收到请求时返回 "Hello, World":

<?php
// 设置监听端口
$host = '127.0.0.1';
$port = 9000;

// 创建一个 TCP 套接字
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($server === false) {
    echo "无法创建套接字: " . socket_strerror(socket_last_error()) . "\n";
    exit(1);
}

// 绑定套接字到地址和端口
if (socket_bind($server, $host, $port) === false) {
    echo "无法绑定套接字: " . socket_strerror(socket_last_error()) . "\n";
    exit(1);
}

// 开始监听
if (socket_listen($server, 5) === false) {
    echo "无法监听端口: " . socket_strerror(socket_last_error()) . "\n";
    exit(1);
}

echo "服务器已启动,正在监听 $host:$port...\n";

while (true) {
    // 接受客户端连接
    $client = socket_accept($server);
    if ($client === false) {
        echo "无法接受客户端连接: " . socket_strerror(socket_last_error()) . "\n";
        continue;
    }

    // 读取客户端请求
    $request = socket_read($client, 1024);
    
    // 构建 HTTP 响应内容
    $response = "HTTP/1.1 200 OK\r\n";
    $response .= "Content-Type: text/plain\r\n";
    $response .= "Connection: close\r\n";
    $response .= "\r\n";
    $response .= "Hello, World";

    // 发送响应到客户端
    socket_write($client, $response);

    // 关闭客户端连接
    socket_close($client);
}

// 关闭服务器套接字
socket_close($server);

代码解释:

  1. 创建服务器套接字socket_create() 创建一个 TCP 套接字,用于监听客户端的连接。
  2. 绑定套接字socket_bind() 将套接字绑定到本地的 127.0.0.1 地址和 9000 端口。
  3. 监听端口socket_listen() 开始监听客户端连接,最大等待队列为 5。
  4. 接受连接socket_accept() 等待并接受来自客户端的连接。
  5. 读取请求socket_read() 读取客户端发送的请求(这里只读取了请求的第一部分,实际应用中可以根据需要解析 HTTP 请求)。
  6. 发送响应:构建一个简单的 HTTP 响应,将 "Hello, World" 作为响应体返回。
  7. 关闭连接socket_close() 关闭客户端和服务器的套接字。

运行方式:

将上面的代码保存为 http_server.php,然后在命令行中运行:

php http_server.php

服务器将会启动,监听 9000 端口。当你使用浏览器或其他 HTTP 客户端(如 curl)访问 http://127.0.0.1:9000 时,你应该会收到以下响应:

Hello, World

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值