在学完linux高级编程后,开启一个HTTP服务器的demo,因为一个完整的http服务器涉及的范围很广,远不是一个人可以全部完成的。所以这个demo只是实现了http服务器的一个简单的功能->GET请求。包括请求html文件和图片(jpg &png)。下面是实现的一些思路:

工作流程:
1.获取初始化服务器配置信息
2.初始化服务器参数
3.启动服务器,监听端口
4.与客户端建立链接,启动子进程处理请求
5.解析请求文件,获得请求文件头if 请求方式为 GET ----参见6else----暂不处理
6.获取请求文本类型
7.获得请求文件路径
8.开启多线程处理文件if 文件存在读取文件数据else 文件不存在读取error.html
9.生成响应头
10发送响应头
11.发送响应数据
12断开连接

关于服务器与客户端(浏览器)连接后的工作时序图如下:

关于代码,下面准备传送门:https://gitee.com/dengmingli/httpFuWuQi/tree/master

实现一个HTTP服务器的Demo相关推荐

  1. Dubbo入门介绍---搭建一个最简单的Demo框架

    Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbo zookeeper 更多 个人分类: ...

  2. go html vue,用Go+Vue.js快速搭建一个Web应用(初级demo)

    Vue.js做为目前前端最热门的库之一,为快速构建并开发前端项目多了一种思维模式.本文给大家介绍用Go+Vue.js快速搭建一个Web应用(初级demo). 环境准备: 1. 安装go语言,配置go开 ...

  3. api怎么写_使用Node.js原生API写一个web服务器

    Node.js是JavaScript基础上发展起来的语言,所以前端开发者应该天生就会一点.一般我们会用它来做CLI工具或者Web服务器,做Web服务器也有很多成熟的框架,比如Express和Koa.但 ...

  4. 客户端服务器通信demo(续) -- 使用二进制协议 (附源码)

    转载连接: http://blog.csdn.net/zhuweisky/article/details/11827797 在网络上,交互的双方基于TCP或UDP进行通信,通信协议的格式通常分为两类: ...

  5. 【spring authorization server系列教程】(一)入门系列,spring authorization server简介。快速构建一个授权服务器(基于最新版本0.3.0)

    系列文章目录 [spring authorization server系列教程](一)入门系列,快速构建一个授权服务器 文章目录 系列文章目录 前言 一.目前已实现的功能 二.入门,一步一步快速开始构 ...

  6. 从零开始一个http服务器(五)-模拟cgi

    从零开始一个http服务器-模拟cgi(五) 代码地址 : https://github.com/flamedancer/cserver git checkout step5 运行: make cle ...

  7. php树莓派养鱼,树莓派学习11: 将树莓派变成一个Web服务器

    将树莓派变成一个Web服务器,通过访问网页,就可以控制树莓派,比如:查看摄像头\开灯等等. 一想到Linux Web服务器,我们首先想到的是,Apache + MySql + Php. 树莓派可以安装 ...

  8. js websocket同步等待_WebSocket硬核入门:200行代码,教你徒手撸一个WebSocket服务器...

    本文原题"Node.js - 200 多行代码实现 Websocket 协议",为了提升内容品质,有较大修订. 1.引言 最近正在研究 WebSocket 相关的知识,想着如何能自 ...

  9. 一文读懂tomcat组件--一个web服务器的架构演化史

    1. tomcat是谁? 2. tomcat可以做什么? tomcat是一个web容器,可以将web应用部署到tomcat,由它提供web服务,一个web容器中可以部署多个web应用,这些web应用可 ...

  10. 在Linux中搭建一个FTP服务器

    在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/f ...

最新文章

  1. Ant 条件判断 if
  2. pandas处理mysql 展现wpf_Python:用Pandas读CSV文件写到MySQL
  3. CentOS7.3下配置 Apache2.4 + MySQL5.7 + PHP7.1.8
  4. 【Android 安全】DEX 加密 ( Application 替换 | 获取 ContextImpl、ActivityThread、LoadedApk 类型对象 | 源码分析 )
  5. 【已解决】虚拟机提示VMware Workstation cannot connect to the virtual machine的问题
  6. 直接打开php非法请求
  7. 入门C语言20问20答
  8. leetcode 有效的字母异位词
  9. android横向纵向切换,【报Bug】安卓竖屏切换到横屏后,再切换回竖屏,不能正常还原...
  10. request库的基本使用
  11. 百度硬盘搜索结盟IBM,Lotus邮件也能搜索
  12. CIF、DCIF、D1分辨率
  13. CS61A自学者学习指南
  14. arc093F Dark Horse
  15. 编码,隐匿在计算机软硬件背后的语言读书笔记(作者序)
  16. Unity3D 动态加载资源方式
  17. mysql date 24小时制_SpringBoor连接mysql数据库取数据库中时间格式是12小时制的时间,如何显示成24小时制...
  18. 脚本安装爱普生790K打印机安装完成之后销毁程序(其他版本打印机更换inf文件即可)
  19. 中国为什么要买美国国债
  20. 扒一扒那些叫欧拉的定理们(六)——九点圆定理的证明

热门文章

  1. 一般处理程序里使用session对象为null,未将对象引用到实例化
  2. nvidia-smi介绍
  3. springcloud架构特点_董事长挖来一位京东T9架构师,送我们两份微服务文档,实在太香了...
  4. ai 2.5d插件_【插画AI教程】从0到1,学会16 种热门插画设计风格!
  5. android字体单位sp,Android中的常用尺寸单位(dp、sp)快速入门教程
  6. Python科学计算——Numpy.genfromtxt
  7. Python程序发布(打包)及pyInstaller、cx_Freeze工具使用介绍
  8. 常见排序算法之基数排序
  9. 编码转换的php小脚本,php编码转换小例子
  10. mysql 存储过程 查询语句怎么写_mysql 查询数据库中的存储过程与函数的语句