位置: IT常识 - 正文

Linux 下使用 C++ 实现的 Web 文件服务器(linux运行c++程序)

编辑:rootadmin
Linux 下使用 C++ 实现的 Web 文件服务器

推荐整理分享Linux 下使用 C++ 实现的 Web 文件服务器(linux运行c++程序),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux c++运行,linux运行c++程序命令,linux c++教程,linux运行c++程序,linux进行c++编程,linux中运行c++程序,linux中运行c++程序,linux c++11,内容如对您有帮助,希望把文章链接给更多的朋友!

项目地址:

Github:https://github.com/shangguanyongshi/WebFileServer

在学习完成《TCP/IP 网络编程》和《Linux高性能服务器编程》后,阅读了一些Web服务器的相关代码,自动动手使用 C++11 实现了这个 Linux 下简单 Web 文件服务器,通过浏览器发送 HTTP 请求管理服务器指定文件夹下的所有文件。主要功能包括:

以 HTML 页面形式返回该文件夹下的所有文件可以选择本地文件上传到服务器可以对列表中的文件文件执行下载操作可以删除服务器中的指定文件

HTML 的文件列表页面如下所示:

整体框架使用 Reactor 事件处理模型,通过统一事件源,主线程使用 epoll 监听所有的事件,工作线程负责执行事件的逻辑处理预先创建线程池,当有事件发生时,加入线程池的工作队列中,使用随机选择算法选择线程池中的一个线程处理工作队列的事件使用 HTTP GET 方法获取文件列表,发起下载文件、删除文件的请求。使用 POST 方法向服务器上传文件服务端使用有限状态机对请求消息进行解析,根据解析结果执行操作后,向客户端发送页面、发送文件或发送重定向报文服务端使用 sendfile 函数实现零拷贝数据发送Linux 下使用 C++ 实现的 Web 文件服务器(linux运行c++程序)

功能展示获取文件列表

上传文件

下载文件

删除文件

运行build 项目sh ./build.sh启动文件服务器./main在浏览器端输入 服务端ip:端口号(端口号默认是8888)serverip:8888拓展

由于时间匆忙,该项目仅仅完成了最基础的功能,但是该项目还有很多可以继续拓展的功能,这里简单列出,以后会继续完善:

现有程序中,运行日志直接输入到控制台,另设进程池实现日志服务(实现远程日志服务器)

增加用户注册登陆功能,根据登陆账户提供各自的文件服务

添加定时器定时处理非活动的连接

参考资料《TCP/IP 网络编程》:https://book.douban.com/subject/25911735/《Linux高性能服务器编程》:https://book.douban.com/subject/24722611/TinyWebServer:https://github.com/qinguoyi/TinyWebServer
本文链接地址:https://www.jiuchutong.com/zhishi/298723.html 转载请保留说明!

上一篇:【Vue3】如何创建Vue3项目及组合式API(创建vue3项目的步骤)

下一篇:3DResNet 学习记录(3d representation)

  • 个人独资企业要注意什么
  • 如何确定开票税率是否正确
  • 积分换物品是真的吗
  • 上市公司收购其他公司要多久
  • 发票查询发票代码有误
  • 防伪税控系统服务费发票在哪里开
  • 同一投资主体内部所属企业之间土地,房屋权属的划转
  • 会计核算原则主要包括
  • 人防工程被出售,谁承担责任
  • 公司冲账发票做不够该如何处理合适?
  • 未结清全额是逾期吗
  • 个人转让认缴出资股权需要交纳印花税吗?
  • 出口发票税率怎么开
  • 临时工怎样做账
  • 发票连号不许报销吗
  • 公司所得税汇算清缴退税流程
  • 转让土地使用权需要缴纳什么税
  • 工程施工成本发票未到会计分录及账务处理
  • 利息收入需要开票吗
  • 1697510768
  • window10怎么用wifi上网
  • 新版edge浏览器文字不显示
  • 文件过滤什么意思
  • 企业支付个人劳务费需要发票吗
  • 公司装修待摊费怎么算
  • rosnmgr.exe - rosnmgr是什么进程 有什么用
  • 如何在Mac上更改我的Apple ID
  • 如何提高php性能
  • 融资性售后回租是什么意思
  • 个人签订借款合同
  • yii2 adminlte
  • 海恩斯科普简介
  • php执行sh脚本
  • 珠宝行业会计核算内容
  • php的中文名
  • jqueryfor
  • nyud数据集
  • 违约金税目
  • 收回已转销的应收账款是什么意思
  • php发邮件系统源码
  • 使用正则表达式提取文本(888)555
  • 预缴税金用于抵减税费
  • 公司两个股东变更为一个股东,需要交税么
  • 小规模纳税人缴纳的增值税计入成本吗
  • 印花税凭证名称如何选择
  • 个体户季报网上申报怎么填写
  • 上市公司发放现金的规定
  • 背书的银行承兑汇票怎么做账
  • 软件公司会计科目
  • 权益法转其他权益工具
  • 小额贷款在银行需要什么条件
  • 资产负债表日后非调整事项应当在附注中披露
  • 销售产品的软件平台
  • 合并报表时抵消内部交易包含的未实现损益的影响包括
  • 无形资产出售时累计摊销为什么在借方
  • 收取招标代理费的规定
  • 新成立公司会计要做哪些事情
  • 工程异地预缴的税款可以抵机构所在地的税金吗
  • 物流行业会计的工作内容
  • 让windows10蓝屏
  • windows十桌面
  • ubuntu15.04系统怎么使用卸载命令卸载软件?
  • win98拨号上网
  • xp移动系统
  • win平板装ubuntu
  • 会声会影win7怎么兼容
  • explorer.exe进程出错
  • win7打印机删除后怎么恢复
  • cocos2dx用什么ide
  • opengl es programming guide
  • 全部删除文件快捷键
  • python 初级
  • android基础入门
  • python字符串的编码规则
  • python拷贝列表
  • javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
  • js中倒计时器怎么实现
  • 打不死的小强励志词句
  • 企业少缴社保怎么补偿
  • 江苏地税局如何交社保
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设