使用php socket创建简单服务器
2018-03-02 17:34
513 查看
创建一个http服务器步骤:
创建socket套接字绑定某个地址和端口
开始监听,并根据客户端的请求做出响应
关闭socket(可以省略,php可以自动回收资源)
PHP代码
<?php /** * @description HttpServer类 * @author luoluolzb <luoluolzb@163.com> * @date 2018/3/2 */ class HttpServer { protected $port; protected $address; protected $socket; /** * 构造函数 * @param string $address 监听地址 * @param integer $port 监听端口 */ public function __construct($address = 'localhost', $port = 80) { $this->port = $port; $this->address = $address; $this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if (! $this->socket) { throw new Exception("Http Server create failed!"); } //绑定地址和端口 socket_bind($this->socket, $address, $this->port); } /** * 析构函数 */ public function __destruct() { socket_close($this->socket); } /** * 开始运行http服务器 */ public function run() { //开始进行监听 socket_listen($this->socket); while (true) { //获取请求socket $msg_socket = socket_accept($this->socket); //获取请求内容 $buf = socket_read($msg_socket, 99999); echo $buf; //输出请求内容 //写入相应内容(输出"Hello World!") socket_write($msg_socket, $this->text("Hello World!")); //关闭请求socket socket_close($msg_socket); } } /** * 获取http协议的文本内容 * @param string $content string * @return string */ private function text($content) { //协议头 $text = 'HTTP/1.0 200 OK' . "\r\n"; $text .= 'Content-Type: text/plain' . "\r\n"; $text .= 'Content-Length: ' . strlen($content) . "\r\n"; //以空行分隔 $text .= "\r\n"; //协议正文 $text .= $content; return $text; } } //测试 $server = new HttpServer(); echo "Server running at http://localhost\r\n"; $server->run();
运行过程
使用命令行运行脚本php HttpServer.php
浏览器访问地址
http://localhost
查看结果:
控制台截图:
浏览器截图:
相关文章推荐
- 使用Socket及ServerSocket创建简单的服务器
- 使用C# socket 简单构架一个web服务器
- SuperSocket服务器架设(二):使用SuperSocket构建简单服务器
- 使用 PHP 5.5 创建和验证哈希最简单的方法
- 使用Java在本地创建一个服务器 ,通过浏览器对其进行访问的一个简单测试
- 使用Subversion创建一个简单的svn服务器
- [转|整理]翻译:使用.net3.5的缓存池和SocketAsyncEventArgs类创建socket服务器
- java----使用socket模拟简单的http请求服务器,响应简单的文件请求操作
- php socket简单的服务器通信程序
- 使用zeng studio 创建的php调用webservice soap简单实例
- php使用socket post数据到其它web服务器的方法
- php使用socket post数据到其它web服务器的方法
- 翻译:使用.net3.5的缓存池和SocketAsyncEventArgs类创建socket服务器
- php简单socket服务器客户端代码实例
- SuperSocket服务器架设(二):使用SuperSocket构建简单服务器
- [导入]翻译:使用.net3.5的缓存池和SocketAsyncEventArgs类创建socket服务器
- 《php---简单的php小服务器》---可惜主机屋空间不允许使用某些函数。只能换别的了。
- 使用zeng studio 创建的php调用webservice soap简单实例
- 使用socket编程实现一个简单的文件服务器
- socket简单创建web服务器之学习笔记