花了一个月,没有搞完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 :输出当前的一些信息。