GitPedia

Sehttpd

A small and efficient web server with 1K lines of C code

From sysprog21·Updated May 24, 2026·View on GitHub·

`seHTTPd` implements a small and efficient web server with 1K lines of C code. I/O multiplexing is achieved using [epoll](http://man7.org/linux/man-pages/man7/epoll.7.html). The project is written primarily in C, distributed under the MIT License license, first published in 2020. Key topics include: asynchronous-programming, ebpf, epoll, http, linux.

seHTTPd

seHTTPd implements a small and efficient web server with 1K lines of C code.
I/O multiplexing is achieved using epoll.

Features

  • Single-threaded, non-blocking I/O based on event-driven model
  • HTTP persistent connection (HTTP Keep-Alive)
  • A timer for executing the handler after having waited the specified time

High-level Design

text
+----------------------------------------------+ | | | +-----------+ wait +-----------------+ | copy +---------+ | | +----------> +------------> | | | IO Device | 1 | Kernel's buffer | | 2 | Process | | | <----------+ <------------+ | | +-----------+ +-----------------+ | +---------+ | | +----------------------------------------------+

Build from Source

At the moment, seHTTPd supports Linux based systems with epoll system call.
Building seHTTPd is straightforward.

shell
$ make

Default server

shell
./sehttpd

Specify the port

shell
./sehttpd -p 8082

Specify the port number with -p flag, by default the server accepts connections on port 8081.

Specify the web root

shell
./sehttpd -w ./www

Specify the web root with -w flag, by default the web root is "./www".

License

seHTTPd is released under the MIT License. Use of this source code is governed
by a MIT License that can be found in the LICENSE file.

Contributors

Showing top 7 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from sysprog21/sehttpd via the GitHub API.Last fetched: 6/15/2026