# NetLoop **Repository Path**: llxGiteeSpace/net-loop ## Basic Information - **Project Name**: NetLoop - **Description**: 本项目基于事件循环(IO多路复用、epoll),封装了Tcpserver,并在此基础上设计了Buffer类,此外,还实现了Http请求的解析、Http response发送、Http向Websocket的升级、websocket解析与发送等。 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-07-28 - **Last Updated**: 2024-10-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: WebServer, Cpp, Http, WebSocket, TCP ## README # 自行实现的网络库 #### 介绍 原本是想开发一个可以一起视频并且看电影的系统,但所有轮子都从头开始造的工作量实在过大,后续打算用开源库来实现。该项目到此为止,现在作为一个自己练手的网络库开源。 #### 软件架构 本项目基于事件循环(IO多路复用、epoll),封装了Tcpserver,并在此基础上设计了Buffer类,此外,还实现了Http请求的解析、Http response发送、Http向Websocket的升级、websocket解析与发送等。 文件结构: ``` --resources:前端页面和视频资源 --src:后端源码 --HttpServer: 包含http解析和回复,以及websocket解析和回复; --MysqlConn: Mysql的封装,该项目前期打算用到,后未使用; --Services: 一个使用的后端demo,原本开发的chatcinema的雏形,实现了分块传输视频到前端,并实现了聊天室的聊天功能;(视频的分块传输采用了多线程,防止主线程阻塞) --TcpServer: 封装了Tcp服务器,以及EventLoop事件循环,还封装了TcpConnection和buffer类; --utils: 包括了项目中用到的工具函数,包括文件处理、sha1和base64的编码解码等功能; --ThreadPool.hpp: 线程池 --json.hpp: 来源https://github.com/nlohmann/json ``` #### 启动过程 运行环境为ubuntu20.04,采用cmake进行编译。 ``` cd build cmake .. make test_service ./test_service ``` 然后即可访问端口ip+9999。(端口可自行修改) #### 图片展示 若没有显示出视频说明resources/public_resources/output.mkv文件不存在,我自己的文件太大,无法上传到gitee,请自己上传想播放的视频。 ![Image text](https://gitee.com/llxGiteeSpace/net-loop/raw/master/examples/main.png) ![Image text](https://gitee.com/llxGiteeSpace/net-loop/raw/master/examples/chatcinema.png)