简要cloud云下载服务器框架
服务器端
构建进程池实现高并发,高效率
不需要重复创建子进程分配任务
子进程有任务执行
无任务阻塞
3种文件传输技术:
小火车协议
大货车
以及sendfile的0拷贝技术
框架:
![](/assets/blank.gif)
头文件
#include <23c.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/time.h>
#include <dirent.h>
#include <sys/stat.h>
#include <unistd.h>
#include <pwd.h>
#include <grp.h>
#include <fcntl.h>
#include <sys/wait.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>
#include <sys/msg.h>
#include <sys/select.h>
#include <time.h>
#include <syslog.h>
#define __USE_POSIX
#define __USE_XOPEN_EXTENDED
#include <signal.h>
typedef __sighandler_t sighandler_t;
#define __USE_UNIX98
#include <pthread.h>
#include <errno.h>
#include <stdarg.h>#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netinet/ip.h>
#include <netdb.h>
#include <strings.h>
#include <sys/epoll.h>#include <sys/mman.h>
#include <sys/sendfile.h>#define ARGS_CHECK(argc, num) \{ \if (argc != num) \{ \fprintf(stderr, "Args error\n"); \return -1; \} \}
#define ERROR_CHECK(ret, num, info) \{ \if (ret == num) \{ \perror(info); \return -1; \} \}#define THREAD_ERROR_CHECK(ret, info) \{ \{ \if (ret != 0) \{ \fprintf(stderr, "%s:%s\n", info, strerror(ret)); \} \} \}
#include "head.h"
#include <23c.h>
//在头文件下定义各种数据结构
//workerdata_t
enum workerStatus{FREE,BUSY
};
typedef struct workerdata_s
{pid_t pid;int ststus;int pipefd;
}workerdata_t;//小火车结构体
typedef struct train_s
{int length;char data[1000];
}train_t;
//函数体
int makeChild(workerdata_t*workerDataArr,int workerNum);
int tcpInit(const char *ip, const char *port, int *psockfd);
int sendfd(int Wpipefd,int fdtosend);
int recvfd(int Rpipefd,int *pfdtosend);
int epollCre();//return 一个监听集合epfd
int epollAdd(int epfd,int fd);//往epoll监听加入fd进行监听
int epollDel(int epfd,int fd);//从epoll监听删除fd解除监听//小火车
int transFile_Small(int netfd);
int transFile_Big(int netfd);//0拷贝技术 sendfile
int zeroCopySend(int netfd);
Makefile文件
srcs:=server/worker.c server/main.c server/worker.c server/tcpInit.c server/sendfd.c \
server/recvfd.c server/epoll.c server/transFile.c #目前的服务器源码文件
objs:=$(srcs:%.c=%.o)
all:client/client server/server
client/client:client/client.cgcc $^ -o $@ -lpthread -g
server/server:$(objs) #先编译成.o文件 再链接成可执行程序gcc $^ -o $@ -lpthread -
简要cloud云下载服务器框架相关推荐
- 华为网页手机云服务器,华为Cloud 云服务
手机上的云服务现在越来越多,这些功能也逐渐被大家所了解和使用.在去年年中,华为作为国产厂商最早发布了其云服务Cloud+.到现在,支持这项服务的终端都已经陆续上市.华为的Cloud+服务有什么样的特点 ...
- armbian宝塔_斐讯N1+Armbian+宝塔+Apache+Mysql+PHP+cloudreve+aria2实现云存储+离线下载服务器...
看到很多人提到不建议在N1的armbian中安装宝塔,因为无法安装WEB环保,于是写一个简单的内容来给大家提供一些灵感. 写在前面: 因为宝塔环境安装Arm系统的兼容性并不好,所以需要做的工作会稍多一 ...
- 阿里云linux服务器下安装scrapy2.4.1框架
阿里云linux服务器下安装scrapy2.4.1框架 1.下载scrapy框架: wget https://files.pythonhosted.org/packages/75/0a/2434fb7 ...
- 斐讯N1+ARMBIAN+宝塔+APACHE+MYSQL+PHP+CLOUDREVE+ARIA2实现云存储+离线下载服务器
漫步云端服务器 http://chdong.top/bbs/ http://www.chdong.top/ 看到很多人提到不建议在N1的armbian中安装宝塔,因为无法安装WEB环保,于是写一个简单 ...
- IOS开发基础之使用AFNetworking框架下载服务器资源图片
IOS开发基础之使用AFNetworking框架下载服务器资源图片 info.plist加入这句 <key>NSAppTransportSecurity</key> <d ...
- 基于阿里云ECS,Ubuntu系统搭建离线下载服务器
基于阿里云ECS,Ubuntu系统搭建离线下载服务器 很开心能参加本次阿里云训练营,使用的ECS是阿里云,ubuntu系统 1.了解什么是CCAA CCAA 是服务器离线下载解决⽅案包,组件包含了Ar ...
- python自动化测试教程百度云盘_Python接口自动化测试框架实战视频教程百度云下载...
主流的Fiddler.Requests.Unittest.Mock等接口测试工具/框架应用 进阶自动化框架设计开发 课程目录: 1-1 接口自动化测试从基础到框架-导学 1-2 接口基础知识回顾 1- ...
- C#实现自动下载阿里云数据库RDS,附转储阿里云OSS服务器
本文属于个人原创作品.个人总结,谢绝转载.抄袭.如果您有疑问或者希望沟通交流,可以联系QQ:865562060. 一.简述 现阶段服务器.数据库上云的选择越来越多,但不是说服务器和数据库上云管理之后就 ...
- Oneindex搭建自己的5T云盘+离线下载服务器
Oneindex搭建自己的5T云盘+离线下载服务器 想起自己有一个onedrive 5T的账号,再加上百度云限速,aria2可以突破百度云的限速,于是动手建了集aria2+ariaNg+oneinde ...
- 阿里云进阶课程四——轻轻松松自建云端下载服务器
基于阿里云服务器打造离线下载服务器 准备工作 配置阿里云服务器镜像 终端工具安装 安装CCAA 配置AriaNg 使用AriaNg下载文件 结语 准备工作 今天是阿里云进阶课程的第四节,任务是基于阿里 ...
最新文章
- python re模块_Python re模块
- internal error:failed to get path of 64-bit Program Files directory
- Yii的 Yii::$app-end()
- 《C#高级编程》中文第七版 读书笔记(目录阐述)
- SAP 电商云 Spartacus UI 从 shipping address 到 shipping method 的 HTTP 请求设计
- C++11中的std::function
- Java 字符串与整数之间的互相转换
- Nmap绕过防火墙脚本的使用
- html5吻胸小游戏,html5气球大战小游戏代码
- mongodb WT_ERROR: non-specific WiredTiger error
- 计算机启动硬盘自检,启动时硬盘自检?这样处理就没事了
- 关于微信支付电商平台二清解决方案
- 【ROS2原理11】C++编程的要点
- nexus私服传项目-401 Unauthorized
- 中触媒科创板上市:市值74亿 为李进与刘颐静夫妻店
- 二手苹果手机哪个性价比高?
- OpenOCD-JTAG调试
- rua出300道四则运算题
- 快速入门Mybatis初学笔记(二)
- Virtual Tablet Mode Switch
热门文章
- SECTION 29 多线程编程
- 航班编程代码c语言,《c语言编写航班查询代码》.doc
- Edge Impulse使用教程之训练模型(接上文)
- 广告学和计算机共通,本科生广告学专业个人职业规划书范文_大风车网
- IC验证面试常问题88道
- Lombok的@Data重写的toString特性 慎重
- 基于Springboot的网上租房(房屋租赁)网站(有报告)。Javaee项目,springboot项目。
- 用C++ Builder编程监控打印机队列状态
- Spring框架入门(一)简介及三种基本注入方式实例
- WELL 全球推广跨越五亿门槛