简易web服务器

函数介绍

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值