it编程 > 编程语言 > Php

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

40人参与 2025-02-13 Php

在 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);

代码解释:

创建服务器套接字:socket_create() 创建一个 tcp 套接字,用于监听客户端的连接。

绑定套接字:socket_bind() 将套接字绑定到本地的 127.0.0.1 地址和 9000 端口。

监听端口:socket_listen() 开始监听客户端连接,最大等待队列为 5。

接受连接:socket_accept() 等待并接受来自客户端的连接。

读取请求:socket_read() 读取客户端发送的请求(这里只读取了请求的第一部分,实际应用中可以根据需要解析 http 请求)。

发送响应:构建一个简单的 http 响应,将 "hello, world" 作为响应体返回。

关闭连接:socket_close() 关闭客户端和服务器的套接字。

运行方式:

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

php http_server.php

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

hello, world

到此这篇关于基于php实现一个简单的http服务器的文章就介绍到这了,更多相关php http服务器内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

PHP使用PHPExcel读取excel数据并批量上传到数据库

02-13

使用PHP和Xunsearch实现歌曲搜索功能

02-13

PHP执行php.exe -v命令报错的解决方案

02-13

详解PHP中互斥锁库hyperf-wise-locksmith的使用

02-13

PHP关键字Self、Static和parent的区别详解

02-13

PHP使用OCR技术实现识别图片中的文字

02-13

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论