您的位置:首页 > 理论基础 > 计算机网络

Lighttpd源码阅读--网络服务通信模型

2016-03-03 20:34 831 查看

网络服务通信模型

相关部分源代码:

base.h

server.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函数

sigaction

signal

其他

源代码阅读经验:

知乎:如何更有效地学习开源项目的代码?

https://www.zhihu.com/question/19637879
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息