当前课程知识点:基于Linux的C++ > 第十五讲 网络编程 > 15.5 编程实践 > LinuxCPP1505
现在我们就为我们这门课程
做最后的总结
我们要让同学们写一道编程的实践题
这一道题
就是我们的Web服务器的开发
要同学们写一个远程系统管理的
Web服务器
允许本地或远程客户通过HTTP协议
访问你的Linux操作系统的系统信息
比如讲 显示时间 Linux发布版本啊
空闲的磁盘空间
整个当前正在运行的进程的信息
诸如此类
你想对你进行操作系统进行远程管理嘛
这些信息的显示是最基本的
要能够做到这一条
在实现这道题的时候
有几个基本要求
第一个 你要使用模块的架构
针对我们Web请求生成动态HTML网页
这是这一个
HTML网页怎么生成呢
你可能需要去补充HTML网页的基础知识
这个我们课上没有时间展开它
不过那些东西比较好学
都是比较简单的
因为我们生成的网页都比较简单
需要的这些知识不多
每个这样的Web请求
都应该实现成共享目标库
允许Web服务器在需要的时候
把它动态地装载到内存里
这是特别重要的
而且Web服务器可以很方便地
添加 删除或替换这些服务模块
每一个服务就是一个服务模块
弄成一个共享目标库
让Web服务器动态地去装载它
这是非常重要的一个地方
接下来 你要在子进程或子线程里
服务我们的Web请求
所以呢你要搞一个进程池或者线程池
来管理Web服务器中那些
服务的进程或线程
然后 服务器本身并不要求
所谓的超级用户权限
不要实现HTTP的全部功能
不是说我真地不要
是我不要求你实现HTTP的全部的功能
你真地要实现HTTP全部功能的话
那工作量太大 太复杂了
作为我们课程的一个期末的大作业
没那个时间
我们不要求你实现HTTP的全部的功能
基本上你能够完成
HTTP1.1协议的GET就OK了
其他呢
POST 你如果能够实现最好了
不能实现也关系不大
1.2以后你不用考虑
就最简单的就OK了
知道它怎么回事就行了
然后 使用面向对象架构来实现
这个一定要要求
我们讲的是C++
要使用面向对象技术来实现它
在实现这个程序的时候
同学们要特别注意
第一 我们原来在讲C++内容的时候
谈到的那些知识
我们在讲Linux系统编程的时候
讨论的那些知识
都要或者说都有可能在我们
这个程序中得到充分的利用
对于这道题你可能
需要使用一个命令行的参数
传递给我们的服务器
你写这个程序 它是一个命令行嘛
那么你可能就需要传递
一些命令行的参数
就可能对命令行的参数进行分析
你要生成动态库
所以你要创建动态目标库
所以你可能需要写一个makefile文件
因为要使用多进程或多线程的技术
那么你可能
需要使用进程或线程的机制
包括进程间同步的通讯机制
或线程同步的机制
这些都是编写我们这个程序的时候
需要了解的
感谢同学们和我一起学习这门课程
谢谢大家
-1.1 提纲
-1.2 程序设计的基本概念
-1.3 简单C/C++程序介绍
-1.4 程序设计的基本流程
-1.5 基本语法元素
-1.6 程序设计风格
-1.7 编程实践
-第一讲 C/C++基本语法元素--编程实践提交入口
-2.1 提纲
-2.2 结构化程序设计基础
-2.3 布尔数据
-2.4 分支结构
-2.5 break语句
-2.6 循环结构
-2.7 编程实践
-第二讲 程序控制结构--编程实践提交入口
-3.1 提纲
-3.2 函数声明、调用与定义
-3.3 函数调用栈框架
-3.4 编程实践
-第三讲 函数--编程实践提交入口
-4.1 提纲
-4.2 算法概念与特征
-4.3 算法描述
-4.4 算法设计与实现
-4.5 递归算法(一)
-4.6 递归算法(二)
-4.7 容错与计算复杂度
-4.8 编程实践
-第四讲 算法--编程实践提交入口
-5.1 提纲
-5.2 库与接口
-5.3 随机数库(一)
-5.4 随机数库(二)
-5.5 作用域与生存期
-5.6 典型软件开发流程(一)
-5.7 典型软件开发流程(二)
-5.8 编程实践
-第五讲 程序组织与开发方法--编程实践提交入口
-6.1 提纲
-6.2 字符
-6.3 数组(一)
-6.4 数组(二)
-6.5 结构体
-6.6 编程实践
-第六讲 复合数据类型--编程实践提交入口
-7.1 提纲
-7.2 指针基本概念
-7.3 指针与函数
-7.4 指针与复合数据类型(一)
-7.5 指针与复合数据类型(二)
-7.6 字符串
-7.7 动态存储管理(一)
-7.8 动态存储管理(二)
-7.9 引用
-7.10 编程实践
-第七讲 指针与引用--编程实践提交入口
-8.1 提纲
-8.2 数据抽象(一)
-8.3 数据抽象(二)
-8.4 链表(一)
-8.5 链表(二)
-8.6 链表(三)
-8.7 链表(四)
-8.8 函数指针(一)
-8.9 函数指针(二)
-8.10 抽象链表(一)
-8.11 抽象链表(二)
-8.12 编程实践
-第八讲 链表与程序抽象--编程实践提交入口
-9.1 提纲
-9.2 程序抽象与面向对象
-9.3 类类型
-9.4 对象(一)
-9.5 对象(二)
-9.6 类与对象的成员(一)
-9.7 类与对象的成员(二)
-9.8 类与对象的成员(三)
-9.9 继承(一)
-9.10 继承(二)
-9.11 继承(三)
-9.12 多态(一)
-9.13 多态(二)
-9.14 编程实践
-第九讲 类与对象--编程实践提交入口
-10.1 提纲
-10.2 四则运算符重载(一)
-10.3 四则运算符重载(二)
-10.4 关系与下标操作符重载
-10.5 赋值操作符重载(一)
-10.6 赋值操作符重载(二)
-10.7 赋值操作符重载(三)
-10.8 赋值操作符重载(四)
-10.9 赋值操作符重载(五)
-10.10 流操作符重载(一)
-10.11 流操作符重载(二)
-10.12 流操作符重载(三)
-10.13 操作符重载总结
-10.14 编程实践
-第十讲 操作符重载--编程实践提交入口
-11.1 提纲
-11.2 泛型编程概览
-11.3 异常处理机制(一)
-11.4 异常处理机制(二)
-11.5 运行期型式信息(一)
-11.6 运行期型式信息(二)
-11.7 模板与型式参数化
-11.8 题外话:术语翻译
-11.9 泛型编程实践(一)
-11.10 泛型编程实践(二)
-11.11 泛型编程实践(三)
-11.12 泛型编程实践(四)
-11.13 泛型编程实践(五)
-11.14 泛型编程实践(六)
-11.15 泛型编程实践(七)
-11.16 泛型编程实践(八)
-11.17 泛型编程实践(九)
-11.18 泛型编程实践(十)
-11.19 编程实践
-第十一讲 泛型编程--编程实践提交入口
-12.1 提纲
-12.2 程序执行环境(一)
-12.3 程序执行环境(二)
-12.4 程序执行环境(三)
-12.5 程序执行环境(四)
-12.6 输入输出(一)
-12.7 输入输出(二)
-12.8 文件系统
-12.9 设备
-12.10 库(一)
-12.11 库(二)
-12.12 makefile文件(一)
-12.13 makefile文件(二)
-12.14 makefile文件(三)
-12.15 编程实践
-第十二讲 Linux系统编程基础--编程实践提交入口
-13.01 提纲
-13.02 进程基本概念
-13.03 信号
-13.04 进程管理(一)
-13.05 进程管理(二)
-13.06 进程管理(三)
-13.07 进程间通信(一)
-13.08 进程间通信(二)
-13.09 进程间通信(三)
-13.10 进程间通信(四)
-13.11 进程池
-13.12 编程实践
-第十三讲 进程编程--编程实践提交入口
-14.1 提纲
-14.2 线程基本概念
-14.3 线程管理(一)
-14.4 线程管理(二)
-14.5 线程管理(三)
-14.6 线程管理(四)
-14.7 线程同步机制(一)
-14.8 线程同步机制(二)
-14.9 C++11线程库(一)
-14.10 C++11线程库(二)
-14.11 C++11线程库(三)
-14.12 C++11线程库(四)
-14.13 C++11线程库(五)
-14.14 编程实践
-第十四讲 线程编程--编程实践提交入口
-15.1 提纲
-15.2 Internet网络协议
-15.3 套接字(一)
-15.4 套接字(二)
-15.5 编程实践
-第十五讲 网络编程--编程实践提交入口