花了一个月,没有搞完Larbin,实在不应该。检讨一下。尽快搞完吧!
Webserver:
在主程序中,以线程的方式启动,得到爬虫的运行状态。
startWebserver : 线程入口程序,完成socket的相关工作,并且监听80端口。
当有数据包到来的时候,调用manageAns进行响应。
readRequest : 在manageAns中作为一个参数被调用。其参数是接受到的文件。(accept已经将文件接收到的文件放入了新的套接字文件中)
readRequest从套接字文件中读取字符,他将文件整个的读取。然后分析是否读取完毕。如果读取完毕,则返回buf+4,即去掉
“Get ”字符的请求内容。如果读取错误则返回NULL。如果没有读取完毕,则继续读取。
parseRequest : 返回1,则表示没有读取完毕,继续读取;返回0,则表示读取完毕;返回-1,则表示错误发生。
首先判断并跳过Get字符。如果已经是读取的这段buf的尾部了,则判断最后字符是否为换行,如果是则返回0,否则由于此时设置size
=0,循环被中断,返回1.如果是读取文件的中部,则查找“ ”,未找到则返回1;已找到则将pos和size进行变换,并找到文件尾。
writeHeader : 向socket(网口)中写入,响应的头。
writeFooter :网页面写入响应html的最后一行代码,并结束这个链接。
writeTime :网页面写入时间
writeDebug :
writeStats :
writeSpecStats :
writeGraph :调用histogram来画柱状图,用来反映历史信息的。
writeUrls :
writeIpUrls :
manageAns :主要进行分配的函数。首先利用writeHeader写出响应头。
然后根据文件类型进行分配。包括output,dns,ip,all,debug,grap,smallstats和默认.
最后写文件结束标志,然后中断链接。
outputStats :输出当前的一些信息。
本文详细解析了Larbin Webserver的主要组成部分及其运作机制,包括线程启动、socket监听、请求处理、响应生成等关键环节。通过深入分析readRequest、parseRequest、writeHeader等核心函数,读者可以全面理解Webserver如何实现高效的数据传输与响应。此外,文章还介绍了输出统计、管理答案等辅助功能,为开发者提供了实用的技术指导。
1万+

被折叠的 条评论
为什么被折叠?



