自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 轻量web服务器开发日记10-server结构体的实现

server结构体在antweb起到非常重要的作用,它主要记录着整个服务器在运行的信息,其中包括监听套接字、mempool内存池、配置信息、请求连接集合、以及工作进程集合等等。 server结构体:typedef struct { //定义监听套接字 int listenfd; //定义监听套接字的地址结构 struct sockaddr_in listenfd_

2016-05-27 11:38:26 496

原创 轻量web服务器开发日记09-日志文件的实现

主流的服务器都标配一个日志文件,其文件用于记录服务器运行的日常信息,例如某个时间段的用户请求连接数、访问文件统计数、成功或完成请求连接数、服务器出错信息等等、该文件主要帮助服务器管理员更好地了解服务器的运行情况。 具体操作函数实现: (1)打开日志文件:int log_file_open(const char *pathname){ int fd = 0; fd = open(

2016-05-26 20:32:17 502

原创 轻量web服务器开发日记08-connection_array结构体的实现

轻量web服务器开发日记中已经略有提及到connection结构体,现在我来详细介绍该结构体在antweb中所起的作用。 因为antweb是并发式处理所有用户的请求连接,所以必须使用请求连接集合来存放所有的连接,即connection_array结构体,而对于某个请求连接则对应着相应的connection结构体。antweb是使用单链表的方式把connection结构体连接起来组成connecti

2016-05-26 15:31:00 325

原创 轻量web服务器开发日记07-response结构体的实现

在日记06中介绍的request结构体是用于存放请求报文信息的,而现在我要介绍的response结构体是用于存放服务器分析request结构体里的请求报文信息后得出的响应报文。 (1)request结构体:typedef struct { //相对原始路径(没有参数) bufstr *raw_url; //响应报文的起始行 bufstr *response_line

2016-05-26 15:17:47 426

原创 轻量web服务器开发日记06-request结构体的实现

request结构体在antweb服务器中的作用是存放请求报文内容的,而其请求报文主要包含起始行的http版本号、url和请求方法,首部的host、connection、accept等等,还有主体内容(若请求方法是post)。 antweb服务器在分析请求报文进行响应处理时,需要从request结构体中获取每一部分的信息进行分析后得出响应报文,然后构建出response结构体来存放响应报文。 而

2016-05-26 14:34:36 378

原创 轻量web服务器开发日记05-配置文件的实现

配置文件是服务器必不可少的主要模块之一,它记录着服务器的初始化的相关参数,例如服务器的端口和ip值,工作进程数目,工作根目录等,而在目前三大服务器(apache lighttpd nginx)的配置文件中会有更多更复杂的参数,使得服务器与该使用者的交互性大大的提高。 在之前的日记中所介绍的内存池的块大小和数目以及服务器的根目录的值是从配置文件上读取的。若大家需要移植该配置文件,只需要修改下面部

2016-05-26 10:49:52 331

原创 轻量web服务器开发日记04-buffile结构体的实现

除了日记03所介绍的bufstr结构体,现在准备介绍的buffile结构体也是使用mempool内存池来存放服务器处理信息的。 buffile结构体主要是用于存放响应信息的主体部分文件内容(html、text、jpg等类型文件),并且记录文件的相关属性。 (1)buffile结构体的具体实现:typedef struct { //文件内容 memblock *fcontent;

2016-05-25 20:16:15 332

原创 轻量web服务器开发日记03-bufstr结构体的实现

经过日记02说明内存池的实现后,现在开始介绍使用内存池的第一个结构体bufstr。 bufstr结构体以及相关实现函数替服务器管理字符串(服务器的处理信息数据)的内存块使用与操作。 我们先看看bufstr结构体的具体实现:typedef struct { //指向数据 char **ptr; //指向内存块开头 memblock * mblock; //

2016-05-25 19:38:58 240

原创 轻量web服务器开发日记02-mempool内存池的实现

大家先看看内存池的相关概念: 内存池(Memory Pool)是一种内存分配方式。 通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。 内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不

2016-05-25 17:54:14 602

原创 轻量web服务器开发日记01-antweb服务器介绍

我是一名大学生,对网络编程颇感兴趣,所以我开发一个轻量级web服务器,我命名它为antweb。

2016-05-25 16:02:14 1036

原创 开机加载内核前的原理(硬件启动)

开机加载内核前的原理(硬件启动)1.实模式是CPU的一种操作模式其特点是具有一个20位的寄存器地址空间即1MB(一个地址代表一个字节,2^20=1048576字节)的寄存器可以被寻址。2.CPU的逻辑电路被设计为只能运行内存的程序。3.通过计算机的逻辑电路的设计,在一加电同时将位于主板的一块ROM芯片里的BLOS程序加载到内存的0xFE000—0xFFFFF(8KB)中。4.中断

2015-01-16 11:22:29 643

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除