使用epoll 时的服务器受理客户端请求逻辑如下: 创建服务器 socket,注册服务器 socket 读事件; 客户端连接服务器,触发服务器 socket 可读,服务器创建客户端 socket,注册客户端socket 读事件; 客户端发送数据,触发客户端 socket 可读,服务器读取客户端信息,将响应写入 socket; 客户端关闭连接,触发客户端 socket 可读,...
voidserve_static(intfd,char*filename,intfilesize){intsrcfd;char*srcp,filetype[MAXLINE],buf[MAXBUF];/* Send response headers to client */get_filetype(filename,filetype);sprintf(buf,"HTTP/1.0 200 OK\r\n");sprintf(buf,"%sServer: Tiny Web Server\r\n",buf);sprintf(buf,"%sConnection: cl...
C进程与php进程的交互数据类型问题: 在C 进程中我准备将服务器处理后的请求数据存储在一个结构体内,然后将此结构体中的信息传给 PHP,而 PHP 进程内也会有一个全局数组与之对应,可是众所周之,结构体是 C 进程内的内存数据,是无法直接传给 PHP 使用的。 这时候我们也需要一种“协议”来解决进程数据类型的异...
socket 处于应用层和传输层之间的虚拟层,由于设置服务器 socket 协议类型为 TCP,那么 TCP 的握手挥手、数据读取等步骤对于我们都是透明的。我们拿到的数据即 HTTP 报文,关于 HTTP 报文结构和其字段解释的文章非常多,这里也不再多提。 首先使用 C 的 strtok() 方法,获取到 HTTP 头的第一行,获取到其 http 方法...
init_socket.h init_socket.c---完成一些WEB服务器的初始化工作 get_time.h get_time.c---获得服务器的时间 http_session.h http_session.c---处理一次HTTP会话 以下是各文件源码: webserver.c: /* * file:webserver.c */ #include<stdio.h> #include...
对于php程序员,对于web服务器来说再熟悉不过了,apache,nginx。。但是内心一直想开发出一个属于自己的web服务器,所以借此机会,用c开发出了一款web服务器。作为1.0版本,他实现了以下功能 完成基础的tcp连接,支持基础的client与其连接 使用fork()来支持并发访问服务器 ...
1.浏览器输入 http://localhost:8000/index.php 可见,他是指向当前目录下的index.php文件,所以先在这个目录下创建文件 鹏哥的第一个web服务器 <?php $array = array( "id" => "1", "name"=> "pengge", "aaa" => "sdsdd", "yes" ...
快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本。 Fast-CGI 提升效率主要靠将 CGI 解释器长驻内存重现,避免了进程反复加载的损耗。PHP 的 sapi cgi-fcgi实现了 Fast-CGI 协议,提升了 PHP 处理 Web 请求的效率。 那么我...
在C 进程中我准备将服务器处理后的请求数据存储在一个结构体内,然后将此结构体中的信息传给 PHP,而 PHP 进程内也会有一个全局数组与之对应,可是众所周之,结构体是 C 进程内的内存数据,是无法直接传给 PHP 使用的。 这时候我们也需要一种“协议”来解决进程数据类型的异构性。当然这个解决方案确定起来还是很...