好吧,首先感谢你点击进来,原谅我标题党了。 小弟花了一个多月的业余时间,手撸了一个 HTTP Server,epoll 结合非阻塞 IO,多进程复用端口,性能还不错,可以算作超级乞丐版 nginx 吧。当然还有很多功能没有实现,有些重要的 HTTP 头部还不支持,反向代理功能也有待实现:)。有文档有测试,地址在 https://github.com/chendotjs/lotos,欢迎 star 和 pr,希望大家不吝赐教!
1
panda1001 2018-02-08 11:51:15 +08:00 via Android
学习一个
|
2
choulinlin 2018-02-08 11:52:04 +08:00 via Android
这么多脑力耗了
目的是不是想搞大自己名气 |
3
misaka19000 2018-02-08 11:52:20 +08:00
想请问下楼主,如果我想要我的 C 语言水平能够看懂这个项目的代码需要什么样的学习路线呀,或者看什么书之类的,蟹蟹!!
|
4
whatanoob OP @choulinlin 不是的呀,我也就一个小菜鸡,开源服务器项目那么多,我这算得上什么。做这个项目算是练练手,整合一下自己的知识,而且我在项目目的里面也提及了是为了实现本科时候的一个小愿望——写一个能用的 Web Server
|
5
choulinlin 2018-02-08 11:56:27 +08:00 via Android
|
6
misaka19000 2018-02-08 11:59:05 +08:00 via Android
@choulinlin 经常看好的 python 库都是用 c 语言写的,可惜 c 语言捉鸡看不懂。。。所以想好好的了解下 c 语言。。。
|
7
nine99 2018-02-08 12:00:03 +08:00
有什么用
|
8
hei1000 2018-02-08 12:10:47 +08:00
支持,才 2000+行代码,可以看看学习学习
|
9
402645707 2018-02-08 12:14:42 +08:00 via Android 1
建议楼主下次直接说句求 star,省的一些人阴阳怪气的来酸,真正觉得你的代码好的不会因为你这一句不给 star,也省得人来怀疑动机
|
10
tairan2006 2018-02-08 12:17:25 +08:00
star 有意义么=_=
|
11
soli 2018-02-08 12:29:07 +08:00
有多少个服务端程序员就有多少个 Web Server。。。
|
12
niubee1 2018-02-08 12:34:32 +08:00
很多年前在学校论坛和人打嘴仗, 一位高人说你们这些用 C 的弱爆了, 他作为汇编党是相当的看不起, 说你们这个论坛用的 ASP, 更是弱爆了, 然后打赌他用汇编写个 Web Server, 然后等到毕业都没有哪怕一个能跑的 demo 发出来.......
|
13
whatanoob OP @misaka19000 回家以后我整理一下,楼上说 apue 的,对新手可能不太友好吧
|
15
v2lf 2018-02-08 13:33:54 +08:00
@misaka19000 有编程基础 看些书就可以直接撸了 - =
|
18
gleymonkey 2018-02-08 13:39:22 +08:00
看成 2 行了。。。
|
19
shiweifu 2018-02-08 14:06:48 +08:00 1
《深入理解计算机系统》最后一章就是一个 C 语言 WebServer 的实现,还实现了 CGI。不过不是 epoll 实现的,好像是 先 展示了一波 while + fork,然后改成了 select,值得学习。
|
20
dtgio 2018-02-08 14:14:23 +08:00 via iPhone
马一个,不知道有生之年会不会回头看😂
|
21
xwyam 2018-02-08 17:40:29 +08:00 via Android 1
已加星
|
22
whatanoob OP |
23
but0n 2018-02-08 17:52:39 +08:00 via iPhone
https://github.com/t01y/J4F
之前尝试过... 后来放弃了 头有点冷 |
24
whatanoob OP @misaka19000 《 c 专家编程》应该可以夯实 c 基础,读起来轻松愉快,《 UULP 》作为系统调用入门,之后看《 APUE 》和《 UNP 》这种大部头会轻松一些。酷壳的文章质量很高(手机没认证,发不了链接),干货满满。我的建议就是这样啦
|
26
misaka19000 2018-02-08 20:12:42 +08:00 via Android
@whatanoob 蟹蟹
|
27
wellsc 2018-02-08 20:21:29 +08:00
@whatanoob #22 难道不是
``` c #include <stdlib.h> int main() { system("python -m SimpleHTTPServer"); return 0; } ``` |
28
blackjar 2018-02-08 21:55:54 +08:00 1
把 tinyhttpd 的线程模型改成 select/epoll 感觉可以在 600 行拿下
|
29
0ZXYDDu796nVCFxq 2018-02-08 22:01:05 +08:00 via iPhone
那个,我想说,nginx 调优一下,其实是远好于这个性能的……
|
30
pkookp8 2018-02-09 00:37:41 +08:00 via Android
棒!
另外有个 tiny,500 行 |
31
ytlm 2018-02-09 08:48:07 +08:00
挺好的,加油!
|
32
zjcqoo 2018-02-09 09:31:09 +08:00
过去在 windows 上用 C++ 撸过一个 IOCP 的 WebServer。不过隐藏的 BUG 一大堆,完全不敢开源出去。。。
|
33
dilu 2018-02-09 10:13:49 +08:00
C 语言写的性能再不强真的就可以考虑回家开个饭店了(不想开饭店的程序员不是好的架构) 手动滑稽
|