网上有许多基于线程的 Web 服务器示例,但我还没有真正看到任何可以提供基于事件循环的良好示例的东西(不是很复杂,例如 lighttp 和 nginx)。
有吗?如果没有,我应该阅读/查看什么来帮助我学习如何制作这种服务器?(这包括 C 中的异步 IO 等)
我已经了解了基于事件循环的编程如何工作的基础知识,尤其是在 Python 等高级语言中,但我需要能够用 C 来实现。
网上有许多基于线程的 Web 服务器示例,但我还没有真正看到任何可以提供基于事件循环的良好示例的东西(不是很复杂,例如 lighttp 和 nginx)。
有吗?如果没有,我应该阅读/查看什么来帮助我学习如何制作这种服务器?(这包括 C 中的异步 IO 等)
我已经了解了基于事件循环的编程如何工作的基础知识,尤其是在 Python 等高级语言中,但我需要能够用 C 来实现。
这是使用libevent的TupleServer源代码的一部分。
简而言之,简单:libevent.org 和示例:http ://www.wangafu.net/~nickm/libevent-book/ 。只要你掌握了 libevent,它的 API 与 http 一起工作,而 evhttp 并不是很健壮,在https://github.com/ellzey/libevhtp有一个替代方案。当然,libmicrohttpd 工作得很好。
不确定您的服务器需要具备多全面的功能,但这里有一个基于 C 的小型 Web 服务器,可以用作起点。它为每个连接派生一个子进程,因此很容易理解,但不是最有效的。