在 PHP 中,你可以使用 socket
函数编写一个简单的 HTTP 服务器。以下是一个示例代码,监听 9000 端口,当收到请求时返回 “Hello, World”:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <?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 OKrn" ; $response .= "Content-Type: text/plainrn" ; $response .= "Connection: closern" ; $response .= "rn" ; $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,然后在命令行中运行:
1 | php http_server.php |
服务器将会启动,监听 9000 端口。当你使用浏览器或其他 HTTP 客户端(如 curl)访问 http://127.0.0.1:9000 时,你应该会收到以下响应:
Hello, World
到此这篇关于基于PHP实现一个简单的http服务器的文章就介绍到这了,更多相关PHP http服务器内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!