1.软件的主要架构 软件的文件布局比较清晰,主要分为6个模块,主模块是thttpd.c文件,这个文件中包含了web server的主要逻辑,并调用了其他模块的函数.其他的5个模块都是单一的功能模块,之间没有任何耦合. 其中包括多路IO复用的抽象模块fdwatch.h/c,这个模块中将常用的IO复用接口,如poll/select抽象为一类接口,从而保证了接口的单一性和软件的可移植性. libhttpd模块包含的是libhttpd.h/c文件,主要的功能是完成地提供http请求的解析和处理服务,对外…
1.主函数模块分析 对于主函数而言,概括来说主要做了三点内容,也就是初始化系统,进行系统大循环,退出系统.下面主要简单阐述下在这三个部分,又做了哪些工作呢. 初始化系统 拿出程序的名字(argv[0])用来作为参数打开那个log(syslog) 解析命令行的参数(parse_args),初始化内部的参数变量 检查当前主机名(addr) 没有的话利用gethostbyname从hostname中获取 检查当前要使用的主机端口(port) 读取Throttle file(门限文件,这里省略) 检查l…
#include <stdio.h> #include <sys/socket.h> #include <stdlib.h> #include <string.h> #include <netinet/in.h> #include <zconf.h> #define PORT 8080 // 服务器监听端口 #define MAX_QUEUE 5 // 待连接的队列最大数 #define MAX_LEN 1024 // 接收浏览器数据…
交叉编译thttpd http://lakie.blog.163.com/blog/static/45185220201162910432330/ thttpd安装与调试 http://blog.csdn.net/21aspnet/article/details/7045845 启动thttpd # /usr/local/thttpd/sbin/thttpd -C /usr/local/thttpd/conf/thttpd.conf 7. 在开发板上为thttpd创建一个独立的用户:httpd,…
一.简介 目的:构建小型WEB站,具备SSL. mini_httpd is a small HTTP server. Its performance is not great, but for low or medium traffic sites it's quite adequate. It implements all the basic features of an HTTP server, including: GET, HEAD, and POST methods. CGI. Bas…
HttpListener 实现web服务器 用于小型服务器,简单.方便.不需要部署. 总共代码量不超过50行. static void Main(string[] args) { //创建HTTP监听 using (var httpListener = new HttpListener()) { //监听的路径 httpListener.Prefixes.Add("http://localhost:8820/"); //设置匿名访问 httpListener.Authenticatio…
一.背景 csapp的网络编程粗略的介绍了关于网络编程的一些知识,在最后的一节主要就实现了一个小型的Webserver.这个server名叫Tiny,它是一个小型的可是功能齐全的Webserver.在短短300行左右的代码中,结合了很多思想,比如,进程控制,unix I/O.套接字.HTTP等,令人兴奋的是,它能够为Web浏览器提供静态和动态的内容,也就是说在浏览器中要打开的HTML之类的文件能够直接通过Tiny直接显示在窗体. 我一直想要学习网络编程,这或许就是第一个做成的东西吧,想想都让人兴…
前言: 根据工程需要,开始上手另一个python服务器---flask,flask是一个轻量级的python服务器,简单易用.将我的学习过程记录下来,有新的知识会及时补充. 记录只为更好的分享~ 正文: 首先在Linux下搭建flask环境,详见如下安装步骤: 安装教程 安装好后只需要编写python程序即可,现在开始第一个flaskweb程序: from flask import Flask app = Flask(__name__) @app.route('/') def hello_wor…
最近在业余时间玩玩树莓派,刚开始的时候在树莓派里写一些基于wiringPi库的C语言程序来控制树莓派的GPIO引脚,从而控制LED发光二极管的闪烁,后来觉得,是不是可以使用HTML5+jQuery等流行的前端技术做一个简单的Web站点,让树莓派搭载这个站点,通过手机或者平板电脑来控制树莓派.经过一番调研,考虑如下: 使用Apache或者Nginx搭建一个Web服务器 优点:服务器实现相对成熟 缺点:偏重,而且与树莓派的交互需要涉及Service调用,而实现RESTful服务对于Apache或者N…
经过系统的学习web服务器,现在知道常用的web服务器的优缺点,这对搭建网站架构时选择使用web服务器很有帮助,现在我简单总结一下: 1. Apache:属于重量级web服务器(重量级主要是在软件包的大小上比较大,软件的耦合度大),但是速度.性能不及其他轻量级web服务器,并且消费内存较高.使用传统的select模型,比较稳定的Prefork模式为多进程模式,需要经常派生子进程.所以消耗的cpu等服务器资源比较大. 2. Lighttpd:轻量级web服务器,cpu占用低,效能好,模块丰富. 3…