
tinyhttpd
_Madrid
华而无实
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
tinyhttpd — 0 — main
原来一直都在做单片机,大三上学期刚准备做互联网,所以开始学C++,数据结构。一直都在学最基础的东西,没有用过框架,也基本没有熟悉那么多API,所以想通过接触一个小的开源程序学习,目的很多,想学习web sever的工作原理,因为将来肯定会做相关的业务,不了解一个本质不利于深入。 要做一个http sever肯定要了解一下基础的知识,必须要清楚的就是浏览器输入一个url后是怎么和服务器...原创 2018-07-04 22:23:01 · 217 阅读 · 0 评论 -
tinyhttpd—1—startup
上一篇分析了main函数的流程,startup也出现在其中,也说了startup的作用。这篇分析startup的源码。int startup(u_short *port) { int httpd = 0; struct sockaddr_in name; //申请一个socket httpd = socket(PF_INET, SOCK_STREAM, 0); if (http...原创 2018-07-06 11:40:08 · 282 阅读 · 0 评论 -
tinyhttpd—2—getline
这一篇分析一下getline,为后面的accept_request做铺垫。int get_line(int sock, char *buf, int size) { int i = 0; char c = '\0'; int n; while ((i < size - 1) && (c != '\n')) { n = recv(sock, &c...原创 2018-07-06 13:04:30 · 212 阅读 · 0 评论 -
tinyhttpd—3—not_found,unimplimented,bad_request,cannot_execute,headers
这一篇看似介绍的函数很多,其实这些函数都有一个特点,就是他们只是很简单的响应报文,无非就是把符合http协议的字符串写到缓存发送给客户端了。至于每一个报文的具体意思就不解释了,知道他们代表的大概意思能帮助我们去理解http sever的原理就够了。void bad_request(int client) { char buf[1024]; sprintf(buf, "HTTP/1.0...原创 2018-07-06 17:23:57 · 240 阅读 · 0 评论 -
tinyhttpd—4—cat,serve_file
这一篇当中的两个函数也都是代码量很小,功能很简单的函数。void cat(int client, FILE *resource) { char buf[1024]; fgets(buf, sizeof(buf), resource); while (!feof(resource)) { send(client, buf, strlen(buf), 0); fgets(bu...原创 2018-07-07 00:31:17 · 252 阅读 · 0 评论