简易web服务器

来源:互联网 发布:软件测试助理 编辑:程序博客网 时间:2024/05/22 17:42

函数介绍

init_socket:初始化网络套接字。
get_line:一次读取网络缓冲区的一行数据。
pare_request_line:解析请求行。
send_line_header:发送响应行和响应头。
send_html:发送html文件。
accept_client:线程函数,用于处理一个连接。

流程分析

代码的执行顺序为
main->init_socket->pthread_create->accept_client->get_line->parse_request_line->send_line_header->send_html

代码下载地址

http://download.csdn.net/detail/wxq714586001/8713647

效果展示

在虚拟机上运行程序,开始监听端口

在windows浏览器上输入虚拟机的ip地址

总结

  1. getsockname第三个参数是以指针传入的,需要将变量初始化为sizeof(struct sockaddr);
  2. http请求行和请求头的每一行都是以\r\n结束。
  3. 即便是不需要请求头,但也要将其从内核缓冲区中读出来,如果没有则会引起tcp的重传。
  4. 与字符’/’的比较,strcmp(“/”, path)或者strcmp(“//”, path)。前者才是正确的,’/’不是转义字符。
  5. 在系统调用时加错误输出代码,多敲几个字符会让你少去很多调试时间。
0 0