闲来无聊,修改纯 C 实现一个 http server

2022-06-04 15:37:58 +08:00
 microxiaoxiao

https://github.com/guocf20/android_httpd 效果如下:

纯 C 实现,无依赖。主要针对原来的线程、进程问题修改,图片不支持,cgi 修改为 Lua 。不考虑并发处理。可以进一步处理用 android 来部署,应该功耗很低。^_^ 当然,用来学习 http 更合适。

3742 次点击
所在节点    程序员
17 条回复
duke807
2022-06-04 17:18:13 +08:00
busybox 裏面的 httpd 你也可以提取出來用,記得也是一個 c 文件
microxiaoxiao
2022-06-04 17:23:41 +08:00
@duke807 哦 真的呀,孤陋寡闻了。回头我去看看,非常感谢。
Donahue
2022-06-04 18:04:17 +08:00
这题我会! 之前实现过类似的,但是比你的做的简单,只实现了 http GET, 和 http HEAD, 也是用多线程处理
microxiaoxiao
2022-06-04 18:08:35 +08:00
@Donahue 不错,我看看能不能把它直接嵌入到 android 里面,把我的旧手机用来当一个服务器^_^.
codehz
2022-06-05 11:53:40 +08:00
(可以考虑顺带配一个 sqlite ,然后基本上就可以宣称功能完备了(
microxiaoxiao
2022-06-05 12:47:18 +08:00
@codehz 大兄弟这个想法很好,我准备把 lua 嵌入进来。
codehz
2022-06-05 15:06:40 +08:00
其实我是看到这个项目才想起来的
https://redbean.dev/
(虽然它显然不能安卓上运行)可以考虑参考它的功能,除了 sqlite3 之外,还可以把 zip 带上,然后相关 api 可以参考它的
microxiaoxiao
2022-06-05 15:19:35 +08:00
@codehz 这个不错呀,我还不确定把它搞成啥样,现在已经把 lua 修改了一波,把网络 socket 相关的嵌入进去了,这样的 lua 比较完整了,哈哈。
Me7426
2022-06-05 15:21:22 +08:00
microxiaoxiao
2022-06-05 15:35:32 +08:00
@Me7426 只能膜拜了,我这个玩票性质。目标主要是独立不复杂,少依赖。
vhus
2022-06-05 18:44:47 +08:00
@Me7426
这个 NB,会快到飞起吗?
收藏了。
microxiaoxiao
2022-06-05 18:55:09 +08:00
@vhus 没有哈,都没有 IO 复用,后面看情况要不要修改。
vhus
2022-06-05 19:08:54 +08:00
@microxiaoxiao
无论怎样都要支持一下,收藏先。
liyafe1997
2022-06-05 20:47:36 +08:00
既然纯 C ,是不是可以在 UEFI 下实现裸机 webserver ?直接调用 UEFI 的网卡驱动?
microxiaoxiao
2022-06-05 23:41:27 +08:00
@liyafe1997 你这个目的和我不一样,你这个想法可以参考 IPMI 的界面,自己先实现一个小型 OS 比较现实
LANB0
2022-06-06 11:17:28 +08:00
@liyafe1997 纯 C 也是会依赖各种系统调用和 glibc 的吧,裸机程序的实现可是会有大不同了
microxiaoxiao
2022-06-06 11:36:59 +08:00
@LANB0 还好,基于系统,主要在手机上玩。你这基于固件的思路,也会依赖固件给你的接口,本身也是个软件接口。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/857246

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX