Lighttpd源码阅读--网络服务通信模型
2016-03-03 20:34
831 查看
网络服务通信模型
相关部分源代码:
base.hserver.c 已读
network.c
base.h里有哪些被用到了?
main函数在server.c中
network.c中的函数主要在server.c的main中被调用
网络通信里面还是涉及到了不少的IO多路复用,IO多路复用模型也是不能不读的。
模型
简单的网络服务通信模型与Lighttpd的网络服务通信模型有什么区别?用文字来描述。
Lighttpd使用了I/O多路复用技术。具体的流程有哪里不一样呢?
客户端应该是没有变化的(推测):
-创建socket
-连接服务器
-收发数据
-关闭socket
这里还是使用的TCP?
是否需要手写一个简单的网络服务通信模型和一个Lighttpd的网络服务通信模型?
疑问
server.c里面有很多宏,这些宏可能是要判断当前平台是否支持某个函数,but具体平台是哪个?
即怎么区分哪段代码是Linux的哪段是Unix的哪段是Windows的?
fam是以代码形式存在于Lighttpd中还是二进制文件的形式?
Lighttpd在Windows下还是需要cygwin这个东西,那么为什么还需要cygwin这个东西呢?(问题还没有描述清楚)
百度:Lighttpd跨平台
SourceInsight工程的几个文件有什么作用
比如:
.IAB
.IAD
.IMB
.IMD
.PFI
.PO
.PR
.PRI
.PS
什么是长连接短连接?
简单的解释:都是TCP通讯(是吗)。长连接是一直保持通讯的连接,不管有没有收发数据。但是短连接的话,只在收发数据的时候建立TCP通讯,数据收发完毕后就断开连接。
资源的释放
//注意资源的释放顺序,是否有关联 log_error_close(srv); network_close(srv); connections_free(srv); plugins_free(srv); server_free(srv);
阅读经验小结
server.c中可以大致的扫一片代码,可以可以知道这片代码的大概作用
比如main函数中的main-loop(主循环)
network.c先不看,先看server.c中的对于network.c中的函数的调用,也就是先看流程。
具体看一片代码的时候,可以先看看流程控制
不要一头栽进去就看具体代码的意思
需要了解的Linux函数
sigactionsignal
其他
源代码阅读经验:知乎:如何更有效地学习开源项目的代码?
https://www.zhihu.com/question/19637879
相关文章推荐
- 怎样去阅读一份php源代码
- 实现在Windows下安装Lighttpd的方法
- CentOS下Lighttpd Web服务器安装与配置方法
- CodeIgniter针对lighttpd服务器URL重写的方法
- 在Lighttpd服务器中运行Django应用的方法
- Nginx、Apache、Lighttpd禁止目录执行php配置示例
- lighttpd 集成 golang
- usebb的lighttpd地址重写规则rewrite规则
- 用Squid来实现Ajax跨域代理
- lighttpd+PHP(FAST-CGI)+mysql的学习笔记(转)
- 高并发高流量的大型网站架构设计(转)
- Linux/Unix 出色命令
- nginx配置xsendfile提升文件下载性能
- 如何让php更快的提供下载
- 腾讯公司后台服务器经典面试题
- crontab
- Ubuntu下安装MySQL
- lighttpd的安装与配置
- 随手记
- 什么是WEB服务器、应用服务器