当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2025-12-12 11:05:18 浏览: 评论:0 

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

  1. <?php 
  2.  
  3. // 设置监听端口 
  4.  
  5. $host'127.0.0.1'
  6.  
  7. $port= 9000; 
  8.  
  9. // 创建一个 TCP 套接字 
  10.  
  11. $server= socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
  12.  
  13. if($server=== false) { 
  14.  
  15. echo"无法创建套接字: ". socket_strerror(socket_last_error()) . "\n"
  16.  
  17. exit(1); 
  18.  
  19.  
  20. // 绑定套接字到地址和端口 
  21.  
  22. if(socket_bind($server$host$port) === false) { 
  23.  
  24. echo"无法绑定套接字: ". socket_strerror(socket_last_error()) . "\n"
  25.  
  26. exit(1); 
  27.  
  28.  
  29. // 开始监听 
  30.  
  31. if(socket_listen($server, 5) === false) { 
  32.  
  33. echo"无法监听端口: ". socket_strerror(socket_last_error()) . "\n"
  34.  
  35. exit(1); 
  36.  
  37.  
  38. echo"服务器已启动,正在监听 $host:$port...\n"
  39.  
  40. while(true) { 
  41.  
  42. // 接受客户端连接 
  43.  
  44. $client= socket_accept($server); 
  45.  
  46. if($client=== false) { 
  47.  
  48. echo"无法接受客户端连接: ". socket_strerror(socket_last_error()) . "\n"
  49.  
  50. continue
  51.  
  52.  
  53. // 读取客户端请求 
  54.  
  55. $request= socket_read($client, 1024); 
  56.  
  57. // 构建 HTTP 响应内容 
  58.  
  59. $response"HTTP/1.1 200 OK\r\n"
  60.  
  61. $response.= "Content-Type: text/plain\r\n"
  62.  
  63. $response.= "Connection: close\r\n"
  64.  
  65. $response.= "\r\n"
  66.  
  67. $response.= "Hello, World"
  68.  
  69. // 发送响应到客户端 
  70.  
  71. socket_write($client$response); 
  72.  
  73. // 关闭客户端连接 
  74.  
  75. socket_close($client); 
  76.  
  77.  
  78. // 关闭服务器套接字 
  79.  
  80. 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,然后在命令行中运行:

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

Hello, World

Tags: PHP服务器 http服务器

分享到: