摘要:shttpd中为了简化处理将服务器与客户端之间的交互抽象成流(stream),流中包含建立的连接的信息、IO类型、IO操作方法(封装在io_class中)、最后读的字节的位置、头部长度、内容长度、流的当前状态标志等。struct stream再来看看流结构中的几个结构struct conn、union channel、struct io、const struct io_class先看看conn 结...
阅读全文
摘要:好了,现在看看shttpd提供的接口。为了让我们能定制自己的处理方式,shttpd采取了注册回调函数的方式。回调函数类型是shttpd_callback_t,使用shttpd_arg结构来传递参数,shttpd_arg结构中包含输入(来自于请求的数据)、输出的缓冲数据、自定义数据。比如使用shttpd_get_env从arg中获取REQUEST_URI和QUERY_STRING[代码]query_...
阅读全文
摘要:最近开始阅读shttpd的源码,这里记录一下自己的理解,欢迎拍砖。shttpd并不是一个完整的web server,而是提供一些便于实现web server的接口,封装了网络通信等处理细节,并且是跨平台的。我们利用这些接口就可以很容易实现我们想要的web server。 首先来感性认识一下shttpd提供的接口给我们带来的便利性。下面的代码实现了一个简单的web server,是不是很简洁呢。 除...
阅读全文