服务器端程序
jifukui
这个作者很懒,什么都没留下…
展开
-
Koa开发之koa-jwt工作过程
最近的工作是开发一个分布式的服务系统,选用的环境是node开发环境,由于需要全面的进行异步开发所以使用Koa框架,开发Web服务需要对用户进行身份认证,所以就使用koa-jwt,为什么使用token这种方式网上有很多介绍token和session的区别我这里就不再赘述了。在给大家演示代码之前我在这一章主要是介绍koa-jwt的工作流程在后面的一章中我将使用程序对大家进行演示。首先我在这附上koa-jwt的源代码,然后为大家剖析其的工作流程。源程序koa-jwt的源程序的主程序在lib/...原创 2020-10-17 15:59:17 · 514 阅读 · 0 评论 -
Thttpd源程序解析17 thttpd请求处理过程详解之really_start_request函数
根据前面系列的介绍httpd_got_request函数检验请求的格式是否正确,httpd_parse_request检验请求的内容是否正确,httpd_start_request函数的主要作用是根据请求的做出具体的回应,主要使用的是really_start_request函数。really_start_request函数really_start_request函数是具体的对用户的请求进行...原创 2019-06-19 11:32:32 · 904 阅读 · 0 评论 -
Thttpd源程序解析12 fdwatch.c文件
fdwatch.c文件的主要作用是管理服务器的文件描述符。1.几个关键的静态本文件内有效的全局变量static int nfiles; //最大支持监听的文件的数量static long nwatches; //监听的文件的数量static int* fd_rw; //文件描述符的读写状态数组static void** fd_data; //读写文件描述符的数据二维数组st...原创 2019-06-10 09:37:12 · 287 阅读 · 0 评论 -
Thttpd源程序解析13 libhttpd.c文件解析
libhttpd.c文件是包含Thttpd服务器处理HTTP请求的相关函数是整个Thttpd的核心。下面将描述此文件中各个函数的作用。static void check_options( void )如果即定义了TILDE_MAP_1也定义了TILDE_MAP_2将在日志文件中输出相关信息,并退出程序。static void free_httpd_server( httpd_server...原创 2019-06-11 16:41:56 · 653 阅读 · 0 评论 -
Thttpd源程序解析19 thttpd请求处理过程总汇
经过前面几篇文章的讲述知道了Thttpd在处理用户的请求时的几个主要的函数的作用,下面将讲述处理请求的是主要流程。当有文件需要进行处理的时候将对每个可以进行处理的文件描述符进行处理,可以进行处理的文件描述符的状态有可读,可写和异常处理。当文件描述符处于可读状态时表示服务器接收的用户的连接请求下面将要进行对用户的请求进行分析和处理。处理流程(1)判断读取的字节数是否大于设置的读取数据的空...原创 2019-06-25 09:53:00 · 673 阅读 · 0 评论 -
Thttpd源程序解析14 连接过程详解
经过前面讲述Thttpd源程序每个函数的大致的功能,现在针对Thttpd如何共做接收用户的连接请求的详细过程。当服务器正常运行的时候将会不断的根据用户设置的服务器的IP地址类型调用handle_newconnect函数进行对有连接请求的处理。handle_newconnect函数是处理用户的连接请求的主要函数。handle_newconnect函数handle_newconnect函数...原创 2019-06-12 10:50:41 · 571 阅读 · 0 评论 -
Thttpd源程序解析16 thttpd请求处理过程详解之httpd_parse_request函数
前面讲解的httpd_got_request函数是判断请求的格式是否正确,httpd_got_request函数则是对请求的数据进行分析。并初始化相关的数据进行返回请求时处理的依据,主要是获取用户的请求的方式,文件的路径,请求的协议的版本并根据此判断相关的数据是否正确并做对应的处理。httpd_got_request函数(1)httpd_got_request函数首先调用函数bufgets...原创 2019-06-18 10:55:15 · 915 阅读 · 0 评论 -
Thttpd源程序解析20 请求回送过程详解
此文章之前讲的请求处理过程说明请求处理过程校验请求格式、分析请求内容、处理请求将数据存储在缓存数组中并将此连接的文件描述符的状态设置为发送状态添加在管理数组中,当程序循环执行到检测此文件的描述符时检测到此文件的状态为发送状态将会执行handle_send函数,此函数的作用是确定发送数据的数据量并发送给客户端,根据发送的状态做出相应的处理。handle_send函数(1)根据是否设置限制最大...原创 2019-06-26 09:43:48 · 305 阅读 · 0 评论 -
Thttpd源程序解析18 thttpd请求处理过程详解之CGI过程
从之前讲述的really_start_request函数我们知道当设置的cgi_pattern不为空且文件具有其他用户可执行的权限且cgi_pattern与文件的扩展名称匹配时将调用CGI过程。CGI过程根据用户的请求方式和请求参数调用存在于cgi_pattern文件目录中的可执行程序返回用户数据的过程。程序流程(1)判断已经使用的CGI的程序数量是否超过了设置的最大数量,如果是退出函...原创 2019-06-24 10:30:35 · 969 阅读 · 0 评论 -
Thttpd源程序解析15 thttpd请求处理过程详解之httpd_got_request函数
httpd_got_request函数主要是用于检测请求的格式是否正确,是请求处理第一个被调用的函数。httpd_got_request函数前面的文章讲述过请求行在HTTP 1.1时代之后变为 请求方式+空格+请求路径+空格+协议版本+回车换行。之前是没有协议版本的字段。这个程序的主要任务就是根据这个标准判断请求的格式是否合法。(1)只要处理的字符的索引值小于当前已经读取的字符的索引值...原创 2019-06-14 11:08:48 · 349 阅读 · 0 评论 -
Thttpd源程序解析10 timer.c文件
Thttpd服务器对于请求处理,请求响应和CGI子程序的运行时间是有限制的,这里面限制是由Timer.c文件中的函数完成的。计时器的结构为:typedef struct TimerStruct {TimerProc* timer_proc;ClientData client_data;long msecs;int periodic;struct timeval time;...原创 2019-06-02 16:30:29 · 342 阅读 · 0 评论 -
Thttpd源程序解析7 CGI是什么
嵌入式中编写后端程序的时候经常会说CGI这个名词,中文意思通用网关接口。这个名词看上去很是高大上,其实他真正的作用是服务器和后端执行具体程序的一个接口。我们做网页程序的时候经常会说前端和后端其实我们还缺少一个前端和后端的交界处服务器端。具体的样式如下图所示:前端用户像是乘客知道自己需要去哪,服务器端像是调度中心知道去哪需要乘坐那辆车,后端是具体的某个线路的车。所以对于服务器而言不需要知...原创 2019-05-24 11:15:58 · 458 阅读 · 1 评论 -
Thttpd源程序解析5 Thttpd工作流程
(1)直监测有多少连接可以进行处理如果没有继续步骤1,如果有进行步骤2。(2)对于服务器初始化成功且服务器文件描述符初始化成功且连接的文件描述符的数量未超过设置的最大连接数量的值且有新的连接的初始化连接然后调到步骤1执行,否则执行步骤3。(3)循环执行当前可以进行处理的文件描述符(连接)。(3.1)没有可以处理的连接的文件描述符执行步骤1,否则执行步骤(3.2)(3.2)文件描述符...原创 2019-05-21 23:47:46 · 512 阅读 · 0 评论 -
Thttpd源程序解析1Thttpd介绍
Thttpd是一个开源的由C语言编写的HTTP服务器,同时支持HTTP1.1;整个项目的程序非常小;.c的源文件不超过10个,整个程序编译完成之后不到100KByte。在多数的类Unix系统下都可以运行,支持GET方式和POST方式;满足大多数嵌入式系统对于HTTP服务的需求;所以在嵌入式Linux系统下常用来作为HTTP服务器。Thttpd的官方网址为:http://www.acme.com...原创 2019-05-16 16:16:56 · 826 阅读 · 0 评论 -
Thttpd源程序解析2 Thttpd编译安装
在浏览器上输入http://www.acme.com/software/thttpd/thttpd-2.29.tar.gz,或者使用wgethttp://www.acme.com/software/thttpd/thttpd-2.29.tar.gz就可以获取Thttpd当前最新版本2.29的源程序的压缩包。1.下载编译(1)在linux控制台创建文件夹用于存放Thttpd源代码mk...原创 2019-05-16 17:05:13 · 2304 阅读 · 0 评论 -
Thttpd源程序解析6 GET和POST的区别
前端面试的时候面试官可能会问你Get方法和POST的方法的区别,很多书上会说Get的请求长度是受限制的,请求在URL中等等等下面我们将看Thttpd处理Get和POST方法时怎样处理。一般的HTTP请求将会分为3各部分以回车换行符间隔:(1)起始行起始行 需要表明请求的方法 请求的文件的路径(相对于HTTP服务器资源目录的路径) 请求使用的协议 三者以至少一个空格间隔。比如下面的格式...原创 2019-05-22 11:13:31 · 484 阅读 · 0 评论 -
Thttpd源程序解析8 一个完整的HTTP过程之文件上传
通过上一讲的讲述Thttpd服务器接收到数据之后将会分析请求头和请求首部,根据请求头获取需要使用的文件或者是CGI程序的路径。在这里给大家讲述一个项目中真是的文件上传的例子,由于为了加快处理的效率和速度对Thttpd程序进行的修改但是大致的步骤应该是一致的需要注意的地方我将会特别的标注出来。我们假设提供文件上传的可执行程序的名字叫做upload.cgi。(1)用户请求当用户需要上传...原创 2019-05-27 10:04:08 · 651 阅读 · 0 评论 -
Thttpd源程序解析3 Thttpd配置
Thttpd在启动时可以进行配置,可以使用命令的方式也可以使用配置文件的方式,这里将对于命令的方式进行配置。下面讲解每个命令的意义。(1)-V作用:输出thttpd服务器的版本信息,然后退出Thttpd程序。注意:当命令参数中有-v参数将会导致程序的退出。(2)-C作用:设置Thttpd服务器读取后面字符串所表示的文件路径的文件,并根据此文件进行配置相关的Thttpd参数。...原创 2019-05-18 13:49:37 · 1478 阅读 · 0 评论 -
Thttpd源程序解析11 mmc.c文件解析
mmc.c文件的作用主要是对于GET方式获取静态的文件资源的时候对未进行内存映射的文件进行文件映射,当下次再次请求此文件的时候将会直接从内存中获取此文件加速了前端访问静态文件的速度 。映射对象结构typedef struct MapStruct {ino_t ino;/**文件索引节点号*/dev_t dev;...原创 2019-06-05 10:57:28 · 653 阅读 · 0 评论 -
Thttpd源程序解析9 thttpd.c文件解析
前面说过Thttpd.c这个文件是整个Thttpd的主要的控制部分下面来将一下Thttpd.c文件中的主要函数以及这些函数的功能。(1)static void handle_term( int sig )对于收到SIGTERM信号的处理,释放申请的资源,向syslog输出日志信息,退出程序。(2)static void handle_chld( int sig )对于收到SIGCH...原创 2019-05-28 14:23:10 · 597 阅读 · 0 评论 -
Thttpd源程序解析4 项目结构
项目结构Thttpd的最终的源代码由8个.c文件和10个.h文件构成下面我来说一下主要文件的主要作用:thttpd.c这个文件是整个服务器的控制中心。(1)分析用户配置命令,配置文件,进行相关信息(参考上一篇文章的讲述)的初始化以及处理,初始化服务器。(2)根据操作系统的相关信号,并对这些信号进行处理,以及处理函数的实现。(3)循环检测可进行处理的新的连接,读请求,发送回送...原创 2019-05-19 15:40:36 · 467 阅读 · 0 评论