From 84b415470bf36135577739d83526fb2d4cf79a52 Mon Sep 17 00:00:00 2001 From: xfy911 Date: Wed, 3 Jun 2026 16:42:10 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E9=AA=A8=E6=9E=B6=EF=BC=88README=20+=20Makefile=20+?= =?UTF-8?q?=20.gitignore=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 12 +++++++++ Makefile | 49 +++++++++++++++++++++++++++++++++++ README.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..43d8dd2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +# Cocoon +/build/ +*.o +*.a +*.so +cocoon +.DS_Store +*.swp +*.swo +*~ +.vscode/ +.idea/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..437028c --- /dev/null +++ b/Makefile @@ -0,0 +1,49 @@ +# Cocoon - 基于 coco 协程库的静态资源 Web 服务器 + +CC = gcc +CFLAGS = -Wall -Wextra -O2 -std=c11 -I../coco/include +LDFLAGS = -L../coco/build -lcoco -lpthread -lm + +# 调试模式 +DEBUG ?= 0 +ifeq ($(DEBUG),1) + CFLAGS += -g -O0 -DCOCOON_DEBUG +endif + +# 安装路径 +PREFIX ?= /usr/local +BINDIR = $(PREFIX)/bin + +# 源文件 +SRCS = main.c server.c http.c static.c +OBJS = $(SRCS:.c=.o) +TARGET = cocoon + +# 默认目标 +all: $(TARGET) + +# 链接 +$(TARGET): $(OBJS) + $(CC) $(OBJS) -o $@ $(LDFLAGS) + +# 编译规则 +%.o: %.c + $(CC) $(CFLAGS) -c $< -o $@ + +# 安装 +install: $(TARGET) + install -d $(BINDIR) + install -m 755 $(TARGET) $(BINDIR)/ + +# 卸载 +uninstall: + rm -f $(BINDIR)/$(TARGET) + +# 清理 +clean: + rm -f $(OBJS) $(TARGET) + +# 重新构建 +rebuild: clean all + +.PHONY: all clean install uninstall rebuild diff --git a/README.md b/README.md new file mode 100644 index 0000000..7d3fc99 --- /dev/null +++ b/README.md @@ -0,0 +1,76 @@ +# Cocoon + +一个基于 [coco](https://github.com/DefectingCat/coco) 协程库的轻量级静态资源 Web 服务器。 + +**Cocoon**(茧)—— 用协程的轻盈,包裹静态资源的安稳。 + +## 特性 + +- 🚀 **协程驱动并发** — 基于 coco 的有栈协程,每个连接一个协程,告别回调地狱 +- 📁 **静态文件托管** — 支持目录列表、MIME 类型自动识别、范围请求(Range) +- 🧵 **多线程调度** — 利用 coco 的 M:N 调度器,自动扩展至多核 +- ⚡ **零拷贝发送** — 支持 sendfile,减少用户态/内核态拷贝 +- 🔧 **极简配置** — 命令行参数即可启动,无需配置文件 + +## 快速开始 + +### 构建 + +```bash +# 克隆仓库 +git clone https://github.com/xfy911/cocoon.git +cd cocoon + +# 构建(需要 coco 库和头文件) +make + +# 运行 +./cocoon -r ./examples/www -p 8080 +``` + +### 依赖 + +- [coco](https://github.com/DefectingCat/coco) — 协程库 +- Linux / macOS(支持 epoll / kqueue) + +## 使用 + +```bash +# 基本用法 +./cocoon -r /var/www/html -p 8080 + +# 多线程模式(自动检测 CPU 核心数) +./cocoon -r ./examples/www -p 8080 -t + +# 指定工作线程数 +./cocoon -r ./examples/www -p 8080 -w 8 +``` + +## 架构 + +``` +┌─────────────┐ ┌─────────────────┐ ┌──────────────┐ +│ main.c │────▶│ server.c │────▶│ static.c │ +│ (入口) │ │ (TCP 服务器) │ │ (静态文件) │ +└─────────────┘ └─────────────────┘ └──────────────┘ + │ + ▼ + ┌─────────────────┐ + │ http.c │ + │ (HTTP 解析) │ + └─────────────────┘ + │ + ▼ + ┌─────────────────┐ + │ coco 协程库 │ + │ (并发 + I/O) │ + └─────────────────┘ +``` + +## 性能 + +基于 coco 协程的高性能上下文切换(< 100ns),Cocoon 能够轻松处理数万并发连接。 + +## 许可证 + +MIT